为什么任务计划程序作业不能访问映射的网络驱动器?

Cra*_*g W 35 windows-7 robocopy task-scheduler

我有一个任务计划程序作业来运行 Robocopy 以将本地文件备份到网络共享。我必须使用域凭据来访问网络共享,但本地计算机不在域中,并且该作业以本地管理员身份运行。这个解决方案临时映射和取消映射网络共享是有效的,但它使我的密码以纯文本形式暴露给任何查看任务计划程序作业操作的人。我更喜欢在半永久性的基础上正常映射网络驱动器,因此任务计划程序作业只需要运行 Robocopy 并引用适当的驱动器号。但是我总是收到错误“系统找不到指定的路径”。从任务计划程序运行此命令时,在 Robocopy 日志中,即使该命令在提升的命令提示符下工作正常(作业设置为以最高权限运行)。另请注意,我已完成此注册表调整以从提升的命令提示符访问映射的驱动器。

编辑:为了澄清,以本地管理员身份登录,我以管理员身份启动 Windows 资源管理器。我将网络共享映射到驱动器号 Y。我以管理员身份启动命令提示符并运行

C:\Windows\System32\Robocopy.exe C:\temp Y:\temp
Run Code Online (Sandbox Code Playgroud)

工作正常。我创建了一个 Task Scheduler 作业来运行完全相同的命令,无论用户是否登录,都具有最高权限。我运行它并得到一个错误。我写到日志并得到

ERROR 3 (0x00000003) Getting File System Type of Destination Y:\temp\
The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)

其次是

ERROR 3 (0x00000003) Creating Destination Directory Y:\temp\
The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 20

映射驱动器是一个用户界面概念,不适用于此类后台任务。通过 UNC 访问目标并确保运行任务的用户有权访问目标。


Pet*_*ter 8

在我的情况下,我所要做的就是取消选中该run with highest privileges标志,但我在与映射驱动器的用户相同的用户上运行任务。


小智 7

尝试使用:

pushd \\machine\share
Run Code Online (Sandbox Code Playgroud)

在计划任务的批处理文件中。网络共享驱动器只能从用户运行的环境中使用。“pushd”将允许它在脚本的上下文中运行。

完成后使用:

popd \\machine\share
Run Code Online (Sandbox Code Playgroud)

取消映射驱动器。

参考:https://blog.adrianbanks.co.uk/windows/2007/03/08/accessing-network-file-shares-from-a-command-prompt.html