如何使用PowerShell中的where子句获取完全匹配?

时间:2017-10-26 09:37:31

标签: powershell

Get-HotFix | Where-Object HotfixID -eq "KB97690" 
if ($?) {
    Write-Output "success"
} else {
    Write-Output "F"
}

上面的代码结果,如何检查完全匹配的hotfixid,如果hotfixid没有完全匹配则应该失败。

但他们在编码之上却取得了成功。

2 个答案:

答案 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."}