Get-HotFix | Where-Object HotfixID -eq "KB97690"
if ($?) {
Write-Output "success"
} else {
Write-Output "F"
}
上面的代码结果,如何检查完全匹配的hotfixid,如果hotfixid没有完全匹配则应该失败。
但他们在编码之上却取得了成功。
答案 0 :(得分:2)
您滥用$?
。此自动变量包含上一个操作的执行状态。即使Get-HotFix | Where-Object HotfixID -eq "KB97690"
没有结果,执行本身也会成功。这意味着,您的脚本if($?)
为$true
。你可能正在寻找类似的东西:
$matchedUpdates = Get-HotFix | Where-Object {$_.HotfixID -eq "KB97690"}
if ($matchedUpdates) {
Write-Host "I found at least one item for it."
}
还有很多其他方法可以实现您的目标。在这里,我们使用的事实是,PowerShell等于一个对象/数组,其项目为$true
(如果提供给if语句),$false
如果它是$null
。
答案 1 :(得分:0)
其他方法:
Get-HotFix -Id "KB97690" -ErrorAction Ignore | %{"I found at least one item for it."}