0
好吧,我想讓這個腳本工作,而不是連續擊中相同的計算機,並無法讓它工作。我不認爲這是做這件事的最好方法,如果您有任何建議,請謝謝。無論如何,似乎有一個問題,第6行「如果(!$ Succssful.Contains($計算機)){」它不會在我發射一個錯誤,而是結束腳本per-maturealy。我試圖刪除「!」但沒有像我預期的那樣運氣。Powershell與.contains功能的字符串問題
$Computers = "TrinityTechCorp"
$HotFixes = Get-Content HotFixes.csv
While ($Successful -AND $Successful.count -ne $Computers.count) {
ForEach ($Computer in $Computers) {
IF (!$Succssful.Contains($Computer)) {
If (Test-Connection $Computer) {
$Comparison = get-hotfix -ComputerName $Computer | Select -expand HotFixID
ForEach ($HotFix in $HotFixes) {
IF ($Comparison -NotLike "*$HotFix*") {
Write-Host "$Computer missing $HotFix"
}
$Successful += $Computer
}
}
}
}
}
如果你有很多計算機來運行它,我會建議包括Invoke-Command在所有計算機上並行運行它。請記住將hotfix.csv放在公共網絡共享上。調用命令-Computername test1,test2 -ScriptBlock {你的腳本}會將所有的寫主機消息返回到一個單獨的輸出中,你可以將它保存在一個文件或其他文件中。 –
btw。什麼是while($ successful)不是..不成功的一個字符串[] ?.此外,由於成功是機器列表,因此您希望將「$ successful + = $ computer」移到修復程序循環之外(因爲現在計算機名稱會添加到每個修補程序上) - 測試 –
其中是$成功「的定義?我想我們錯過了你的一些腳本。 –