我需要映射到一个networking空间的映射驱动器,如S:一些其他的工作。 我的方框是Windows Server 2008.在Windows Server 2008中,我可以使用bat作业创build计划任务,并且可以指定它在Windows重新引导时运行,或者在没有指定用户的情况下login。 它像一个本地系统的服务。 蝙蝠包含networkingcmd映射驱动器:
net use S: \\netdrive1\space1 pwd /user:oneUser
然后我重新启动盒子。 看起来计划的工作确实运行了。 我可以从任务计划程序作业的历史logging中检查。 但是,S:驱动器不能被映射。 如果我只是从命令行运行蝙蝠。 它工作正常。 看来我必须login框来制作映射的驱动器。 不知道是否有可能让Windows作为本地系统运行作业,当它重新启动,使驱动器可用?
在我的情况下,networking驱动器在Unix机器上。
正如我上面提到的,我在Windows本地系统下有一些其他依赖项计划作业。 因此,我不得不在任何用户login的情况下使networking空间可用。
映射的驱动器仅适用于交互式会话。 作为服务运行时,您不能映射驱动器,您需要使用UNCpath。
我面临类似的问题。 当我试图安排一个任务,并作为行动浏览脚本,映射驱动器甚至没有被显示。 我在浏览文件系统中的文件时打开的窗口中重新映射了驱动器。 之后,它为我工作得很好。
我遵循的步骤是:
打开任务计划程序
创build一个新的任务,所有的细节,触发器等需要。
转到操作 – >从下拉列表中select操作 – >单击“浏览”
(这打开了浏览窗口)
右键单击计算机 – >映射networking驱动器 – >映射所需的驱动器
将文件附加到作业
完成
干杯!!
你陷入了一个尴尬的境地……调度器正在以“pipe理员模式”执行你的bat文件,这并不真正影响用户模式环境。 我知道这听起来很奇怪,但我自己的testing表明,它可能是2个独立的用户环境。 你可能想尝试在用户configuration文件的启动文件夹中运行一个快速肮脏的vbs脚本…看看是否你想要的。
set WshShell = WScript.CreateObject("WScript.Shell") Set objNetwork = CreateObject("WScript.Network") do while true objNetwork.MapNetworkDrive "S:", "\\netdrive1\space1", false, "oneUser", "pwd" WScript.Sleep(12000) loop
如果驱动器没有得到未映射…当它尝试重新映射驱动器时,这会在下一个循环中抛出一个错误…除非你发现错误…或者做一个快速&脏
On Error Resume Next
在循环之前。
你可以根据需要调整睡眠时间…或者做一些更高级的时间/date检查机制……但这应该给你的想法。
net use S: \\netdrive1\space1 pwd /user:oneUser /persistent:yes
这可能会消除计划任务的需要,但我不确定是否会保持连接没有用户login。
你的应用程序中的UNCpath比映射驱动器好得多,所以如果可能的话,你应该这样做。
http://technet.microsoft.com/en-us/library/bb490717.aspx
编辑
这不是很优雅,但它可能工作(完全未经testing)
NET USE \\netdrive1\space1 /USER:oneUser pwd && PUSHD \\netdrive1\space1 COPY C:\path\to\files\*.dat Z:\ POPD && NET USE \\netdrive1\space1 /DELETE
尝试作为你的batch file。 发生什么事是NET USE根据共享validation用户,PUSHD自动将驱动器挂载到一个驱动器盘符(以相反的顺序,所以假设没有其他驱动器被挂载,在这种情况下没有,这将是Z :)。 复制文件,然后杀死连接到共享。 我不知道这是否会在没有交互式login会话的情况下工作,但值得一试。
你有没有考虑使用UNCpath,而不是试图映射驱动器号? 98%的案例使用\\ server \ share \,无论您身在何处,都不会造成任何问题。
我能够以我想要的用户身份运行我的计划任务,并且只使用NET USE Q: \\192.168.7.1\space作为运行的批处理脚本的第一行。
不幸的是,由于第三方库处理UNCpath的方式,我没有直接使用UNCpath的选项。