与其他域用户一起运行计划任务

与其他域用户一起运行计划任务

我有一个 .bat 文件,用于将文件从源复制到目标。源是本地加入的服务器,目标是网络上未加入的计算机。我需要使用任务计划程序运行此 .bat 文件。哪些用户可以对目标文件夹拥有权限?在任务计划程序上,我只能设置本地或域用户。该 .bat 文件的语法如下:

robocopy "C:\temp\test.txt" "\\192.168.0.1\c$\temp"

答案1

由于这个问题在搜索引擎中有很多点击,我认为添加另一种有效的方法会很有用(在对类似问题的回复):

您可以使用凭证管理器在 Windows 控制面板中找到。

  1. 以将运行计划任务的用户身份登录
  2. 打开凭证管理器
  3. 点击“添加 Windows 凭据”
  4. 使用服务器名称填充“互联网或网络地址”字段
  5. 填写“用户名”(包括必要的域名,即 MyDomain\MyUser
  6. 填写“密码”
  7. 单击“确定”

您的计划任务现在将自动使用凭证管理器中保存的指定主机的凭证。

请注意,如果用户密码发生变化,您需要在凭证管理器中更新密码。

一张图胜过千言万语: Windows 凭据管理器实际运行

答案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"

robocopy 传输文件而不是文件夹

https://stackoverflow.com/questions/1030739/how-can-i-copy-network-files-using-robocopy

相关内容