2017-09-25 83 views
0

我將創建(使用PowerShell腳本)一個表並將結果(正面/負面)添加到它。 我有一個文本文件computers.txt,其中列出了所有的PC。如何檢查PC中是否安裝了修補程序KBxxxxxx(示例:KB4012212)?

像這樣

 
CSNAME   Hotfixinfo 
PC1    is installed 
PC2    is not installed 
PC3    is installed 
etc. 

用我的實際腳本我只能看到積極的結果。

Get-Content .\computers.txt | Where { 
    $_ -and (Test-Connection $_ -Quiet) 
} | foreach { 
    Get-Hotfix -Id KB4012212 -ComputerName $_ | 
     Select CSName,HotFixID | 
     ConvertTo-Csv | 
     Out-File "C:\$_.csv" 
} 
+1

你過濾掉與'(測試連接$ _some_壞的結果_ -Quiet)'',其餘部分使用'Get-Hotfix -id KB4012212 -computername $ _'作爲空值不會被傳遞到pipt。如果您希望看到更多,則需要爲每臺計算機運行這些命令並保存結果。檢查結果,它沒有任何你可以傳遞一個空對象或類似的東西[pscustomobject] @ {CSName = $ _; HotFixID =「N/A」} – Matt

+0

Your computers.txt是一個TSV文件? – TheIncorrigible1

回答

0

我建議通過分析和處理的陽性和陰性結果(也快於管道ForEach-Object):

:parse ForEach ($Computer in (Get-Content C:\Path\computers.txt)) 
{ 
    If (Test-Connection $Computer -Quiet) 
    { 
     $Result = Get-Hotfix -Id KB4012212 -ComputerName $Computer -ErrorAction 'SilentlyContinue' 

     If ($Result) 
     { 
      $Result | 
       Select-Object -Property CSName,HotFixID | 
       ConvertTo-Csv -NoTypeInformation | 
       Out-File "C:\$Computer.csv" 
      Continue :parse 
     } 
     "`"CSName`",`"HotFixID`"`r`n`"$Computer`",`"NUL`"" | 
      Out-File "C:\$Computer.csv" 
    } Else { Write-Host 'Unable to connect to $Computer' } 
} 
相關問題