如何在远程计算机上使用 wmic 复制网络文件?

如何在远程计算机上使用 wmic 复制网络文件?

我是域管理员,我正在尝试运行 wmic 脚本从另一台远程 PC 复制远程 PC 上的文件。

我的命令:

WMIC /NODE:@"C:\compList.txt" PROCESS CALL Create "xcopy \\networkPC\file.exe C:\"

它不会在 compList.txt 上列出的计算机上复制 file.exe,我知道这不是权限问题,因为我尝试运行一个简单的进程

cmd /c echo 1>C:\1.txt

并在远程计算机上创建了 1.txt。

可能是什么问题呢?

答案1

您是否启用了 Windows 防火墙(或第三方防火墙)来阻止 WMI 调用?需要打开端口 135 才能使 WMI 正常工作。请参阅本文有关通过防火墙连接 WMI 的详细信息。

编辑:

我对此做了进一步的挖掘- 您的问题是 WMIC 在尝试连接到 networkPC 时如何使用您的凭据。您正在以默认模拟模式“Impersonate”运行 WMIC - 这允许 WMIC 在本地计算机(compList.txt 中的计算机)上模拟您的帐户 - 但是当它尝试连接到远程计算机(networkPC)时,它无法模拟您,因此它以 NT AUTHORITY\ANONYMOUS LOGON 的身份进行连接。

我认为这里有两种可能的解决方案:

  1. 允许 networkPC 上的共享具有 NT AUTHORITY\ANONYMOUS LOGON 的读取访问权限 - 这比听起来要复杂一些 - 您必须授予 ANONYMOUS LOGON 共享和文件级别权限,并允许它在 dcomcfg 中激活 WMI
  2. 设置您的 WMIC 调用以使用委托模拟。这要求您在 AD 中设置用户和计算机帐户“值得信任的授权“权限。然后,您可以使用/IMPLEVEL:Delegate- 调用 wmic,但这又带来了一个新问题,因为您还需要传入参数/AUTHORITY:"kerberos:targetdomain\targetcomputer"- 而 targetcomputer 是 compList.txt 中的计算机名称 - 这意味着您需要将 wmic 调用放在 compList.txt 中的计算机循环中,而不是使用/NODE:@compList.txt

答案2

我解决此错误的一种方法是使用runas。如果您有权访问命令行,请使用/runas:<domain>\<domainadmin> cmd.exe。您将获得使用域管理员凭据运行的第二个命令行。(注意:要在 Windows 7 上执行,您可能必须提升 UAC。)

一旦您有了域管理命令行,请继续使用 WMIC。

C:\\>**runas /user:dom\domadmin cmd.exe**

(将要求输入域管理员密码,并打开一个新的命令提示符)

C:\\>**wmic /node:@c:\list.txt**

然后

wmic:root\cli>**call create process "xcopy \\\server\file C:\folder\file"**

应该复制过来。

相关内容