我有一个 .bat 文件,用于将文件从源复制到目标。源是本地加入的服务器,目标是网络上未加入的计算机。我需要使用任务计划程序运行此 .bat 文件。哪些用户可以对目标文件夹拥有权限?在任务计划程序上,我只能设置本地或域用户。该 .bat 文件的语法如下:
robocopy "C:\temp\test.txt" "\\192.168.0.1\c$\temp"
答案1
由于这个问题在搜索引擎中有很多点击,我认为添加另一种有效的方法会很有用(在对类似问题的回复):
您可以使用凭证管理器在 Windows 控制面板中找到。
- 以将运行计划任务的用户身份登录
- 打开凭证管理器
- 点击“添加 Windows 凭据”
- 使用服务器名称填充“互联网或网络地址”字段
- 填写“用户名”(包括必要的域名,即
MyDomain\MyUser
) - 填写“密码”
- 单击“确定”
您的计划任务现在将自动使用凭证管理器中保存的指定主机的凭证。
请注意,如果用户密码发生变化,您需要在凭证管理器中更新密码。
答案2
由于目标计算机未加入,因此无法以目标主机用户的身份在源主机上运行任务。唯一可行的方法是通过直通身份验证。
也就是说,在源主机和目标主机上创建一个具有相同用户名和密码的用户。然后配置您的任务以从源主机以该本地用户身份运行。由于两个位置的凭据相同,因此 Windows 可能能够将身份验证请求传递到目标主机,并且由于凭据相同而正常工作。
我从来没有在计划任务的上下文中这样做过,但它对于交互类型的东西来说相当可靠。你可能会遇到一些网络 UAC 限制但这取决于操作系统版本。
答案3
Net Use 应该可以解决这个问题:
使用 net use 映射驱动器号,然后使用 robocopy 复制到驱动器号。将其全部包装在 bat 脚本中,然后安排 bat 脚本。
net use x: \\servername\sharename /user:username password
对于用户名,请输入 LocalMachineName\username
在 bat 脚本的末尾,删除驱动器映射:
net use x: /DELETE
答案4
为什么不尝试在批处理文件中使用“runas”,对于用户名,确保使用 MACHINENAME\username,其中 MACHINENAME 是未加入域的计算机的名称。
我看到的另一个问题是 robocopy 的语法错误。如果您只复制一个文件,您可能只需要使用 copy。如果您想使用 robocopy,请参阅下面的正确语法。
然后安排批处理文件在加入域的计算机上运行。
runas /user:MACHINENAME\username robocopy "C:\temp\ \\192.168.0.1\c$\temp test.txt"
https://stackoverflow.com/questions/1030739/how-can-i-copy-network-files-using-robocopy