好的,我正在努力让这个脚本工作,而不是一遍又一遍地连续点击相同的计算机,并且无法正常工作。我不认为这是最好的方法,如果您有任何建议,请谢谢。无论如何,第6行似乎存在问题“IF(!$ Succssful.Contains($ Computer)){”它不会向我发送错误,而是以成熟的方式结束脚本。我试过删除“!”但没有我预期的运气。
$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
}
}
}
}
}
答案 0 :(得分:0)
这一行
While ($Successful -AND $Successful.count -ne $Computers.count) {
永远无法评估为$ true。不存在的变量($ Successful)的.count
- 属性是$ null,对于一个字符串也是如此(因为你只指定了一台计算机,它不是一个数组)。
强制Powershell返回" true"项目数量,请改用@($Successful).count
和@($Computers).count
。这将给你1,即使$ Computers没有定义为数组。因此,在替换变量的情况下,您的行将被解释为
While ($null -AND $null.count -ne $null) {
在Powershell 3中,您可以阅读here,但情况已不再如此。