对于它的价值,要求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 可能不会有更好的运气。