我是一个域的pipe理员和即时通讯尝试运行一个wmic脚本从另一台远程pc上复制一个远程pc上的文件。
我的命令:
WMIC /NODE:@"C:\compList.txt" PROCESS CALL Create "xcopy \\networkPC\file.exe C:\"
它不复制compList.txt上列出的计算机上的file.exe,我知道这不是一个privilage问题,因为我试图运行一个简单的过程
cmd /c echo 1>C:\1.txt
并在远程计算机上创build了1.txt。
可能是什么问题呢?
是否有可能启用阻止WMI调用的Windows防火墙(或第三方防火墙)? 端口135需要打开WMI才能正常工作。 有关通过防火墙连接WMI的详细信息,请参阅本文 。
编辑:
我做了一些更深入的挖掘 – 你的问题是WMIC如何使用你的凭证,当它试图连接到networkPC。 您正在使用默认模拟模式“Impersonate”运行WMIC – 这允许WMIC在本地计算机(compList.txt中的计算机)上模拟您的帐户 – 但是当它尝试连接到远程计算机(networkPC)时,它不能模拟你,所以它连接为NT AUTHORITY \ ANONYMOUS LOGON。
我认为你在这里有两个可能的解决scheme:
/IMPLEVEL:Delegate调用wmic,但是这样会产生一个新问题,因为你还需要传入/AUTHORITY:"kerberos:targetdomain\targetcomputer"参数 – 目标计算机是compList的计算机名称。 txt – 这意味着你需要把你的wmic调用放在compList.txt中的计算机周围,而不是使用/NODE:@compList.txt 我得到这个错误的一个方法是使用runas 。 如果您有权访问命令行,请使用/runas:<domain>\<domainadmin> cmd.exe 。 您将获得第二个命令行,该命令行使用域pipe理员凭据运行。 (注意:要在Windows 7上执行,您可能需要提升UAC。)
一旦你有你的域pipe理员命令行,继续与WMIC。
C:\\>**runas /user:dom\domadmin cmd.exe**
(将要求域pipe理员密码,并打开一个新的命令提示符)
C:\\>**wmic /node:@c:\list.txt**
然后
wmic:root\cli>**call create process "xcopy \\\server\file C:\folder\file"**
应该复制过来。