因此,我们最近在网络中遇到了KB971033更新的问题,我设法获得了删除该脚本并重新激活Windows的工作脚本,但是,当尝试使检测脚本工作以确保它仅在受影响的计算机上运行时,当针对已安装的KB进行测试时,无法使其正确输出true或false。
到目前为止,这是我正在运行的。无论我做什么,都会输出false。有什么明显的我想念的吗?
if ((get-hotfix).hotfixid -eq "KB971033") {$true} else {$false}
答案 0 :(得分:2)
(get-hotfix).hotfixid
返回一个数组,因此您不应将其与-eq
进行比较。
这应该做到:
((Get-HotFix | Select-Object -ExpandProperty HotFixID) -contains 'KB971033')
或简称:
(((Get-HotFix).HotFixID) -contains 'KB971033')
答案 1 :(得分:1)
测试不同的修补程序时,IMO筛选所有修补程序的效率很低。
if (Get-Hotfix -ID KB971033 -EA 0) {$true} else {$false}
-EA 0
是-ErrorAction SilentlyContinue
的缩写
答案 2 :(得分:0)
也许尝试
if ($(get-hotfix).hotfixid -eq "KB971033") {$true} else {$false}
“ $”将使“ Get-Hotfix”结果成为具有成员“ .hotfixID”的对象。
答案 3 :(得分:0)
在我的Windows Server 2016环境中,您的代码工作正常...可能未安装此修补程序或未与“ get-hotfix”一起列出
否则,您可以尝试以下操作:
$HotfixID= "KB971033"
IF((get-hotfix).hotfixid | ?{ $_ -eq $HotfixID}){$true} else {$false}
它在远程计算机上也可以使用:
(get-hotfix).hotfixid -ComputerName "***SomeDNSName / FQDN***"