我有一个我要运行的wmic命令,它会查询机器列表并在安装了修补程序时返回csv文件。在我的情况下,修补程序ID是2617858.它开始处理,然后在大约20秒后出现:错误:desciption =异常发生。它适用于文件中有几台机器但我需要在40台计算机上运行它。
有什么建议吗?感谢
CODE:
wmic /failfast:on /node:@"C:\users\username\desktop\servers.txt" qfe | find "2617858" > \\computername\C$\users\username\desktop\hotfix.csv
答案 0 :(得分:0)
对于它的价值,可能更容易让wmic
过滤而不是通过wmic
来管道find
。像这样:
wmic /node:@"C:\users\username\desktop\servers.txt" qfe where hotfixid="KB983590" get csname /format:list >>hotfix.txt
或者,如果问题是wmic
无法处理servers.txt中的那么多服务器,请尝试使用批处理for
循环遍历列表。
@echo off
setlocal
for /f "usebackq delims=" %%I in ("C:\users\username\desktop\servers.txt") do (
set /P "=Checking %%I... "
wmic /node:%%I qfe where hotfixid="KB983590" get csname /format:list >>hotfix.txt 2>>failures.txt
echo Done.
)
echo Unable to query the following computers:
type failures.txt
作为替代方法,您可以使用PowerShell执行相同的操作。
powershell -command "$pcs = Get-Content C:\users\username\desktop\servers.txt; foreach ($pc in $pcs) { Get-WmiObject -Computername $pc Win32_QuickFixEngineering | where-object {$_.hotfixid -eq 'KB980232'} | select-object csname }" >>hotfix.txt
...虽然如果wmi在wmic的服务器上没有响应,你使用powershell可能会有更好的运气。