任务计划程序 - 在运行未登录的任务时访问非本地驱动器

时间:2014-06-26 10:54:50

标签: batch-file scheduled-tasks scheduler drive

我在win scheduler中有一个每分钟运行一次的任务。该任务运行一个.bat文件,SVN更新一系列文件夹,然后执行perl脚本(反过来将运行其他几个脚本)。 perl脚本的输出/'log'(由日期/时间标记)发送到共享驱动器,而不是运行任务的机器的本地驱动器。

整个任务完美无缺,直到将日志发送到共享驱动器。由于任务需要每分钟运行一次,我认为最好在任务调度程序中使用“运行是否登录用户”设置。下面的框中详细说明了“不存储密码”。该任务只能访问本地计算机资源。显然这对我不起作用,所以我不加控制。

但是,即使登录,脚本仍然不会写入共享驱动器。有没有人对如何解决此问题有任何建议?我也意识到我可以'只在用户登录时运行'(这可以写入共享驱动器),但在这种情况下,我需要一种明确的方法来确保帐户永远不会注销,并且不能被其他用户强制注销(计算机由多个用户共享,一次最多两个)。

思想?

3 个答案:

答案 0 :(得分:15)

phd443322已经给出了正确答案。

如果网络连接是使用默认设置进行的,则Windows注册表中的用户帐户会保存共享文件夹到驱动器号的映射。因此,每个使用计算机的用户都可以拥有不同的网络驱动器。

选项重新连接登录 以将共享文件夹映射到默认选中的驱动器号。但是,在创建连接以将共享文件夹映射到仅用于当前用户会话的驱动器号之前,可以取消选中此选项。

在命令提示符窗口中输入

net use /?输出此命令的帮助,该命令用于将共享文件夹映射到命令行或批处理文件中的驱动器号。有选项/PERSISTENT:{YES | NO},默认为YES。例如

net use Z: \\computer\share /persistent:no

将共享文件夹连接为驱动器Z:仅用于当前用户会话。

这解释了为什么AMcNall在自动化任务中使用网络驱动器失败的原因。

额外提示:

使用连接到公司网络的办公室使用的笔记本电脑,以及家中的专用网络或无网络,最后也经常在其他网络中,建议避免Windows自动连接网络在我的观点登录后。最好使用位于硬盘上某处的批处理文件,并将该批处理文件的快捷方式存储在用户Windows开始菜单的文件夹启动中,并将属性设置为运行具有最小化窗口的批处理文件。批处理文件包含例如:

@echo off
echo Checking availability of server/computer XXX
%SystemRoot%\system32\ping.exe -n 1 XXX >nul
if errorlevel 1 goto EndBatch
echo Map shared folder XXX\share to drive letter Z:
%SystemRoot%\system32\net.exe use Z: \\XXX\share /persistent:no
:EndBatch

答案 1 :(得分:0)

修复方法是使用Subst命令而不是Net Use。

答案 2 :(得分:0)

我有一个类似的问题 - 我的任务会运行,但不允许被叫程序访问共享,即使我要求它作为拥有权限的用户运行。

以下内容有所帮助,现在它在任务计划程序中运行。以下内容来自帮助的Google搜索。

转到“开始”菜单。 跑。 输入secpol.msc。 ... 本地安全策略管理器将打开。 转到安全设置 - 本地策略 - 用户权限分配节点。 双击右侧登录为批处理作业。

希望这有助于某人。