0

好的,我正在尝试让这个脚本工作,而不是不断地反复访问同一台计算机,并且无法让它工作。我认为这不是最好的方法,如果您有任何建议,请感谢您。无论如何,第 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
                }
            }
        }
    }
}
4

1 回答 1

0

这条线

While ($Successful -AND $Successful.count -ne $Computers.count) {

永远不能评估为 $true。不存在的变量 ($Successful)的.count-property 是 $null,字符串也是如此(因为您只指定了 1 台计算机,它不是数组)。

要强制 Powershell 返回“真实”数量的项目,请使用@($Successful).countand @($Computers).count代替。这会给你 1,即使 $Computers 没有被定义为一个数组。因此,替换变量后,您的行被解释为

While ($null -AND $null.count -ne $null) {

在 Powershell 3 中,如您在此处阅读的,情况不再如此。

于 2013-03-29T13:30:57.213 回答