Windows修补程序的检测脚本

时间:2019-03-08 14:43:58

标签: windows powershell hotfix

因此,我们最近在网络中遇到了KB971033更新的问题,我设法获得了删除该脚本并重新激活Windows的工作脚本,但是,当尝试使检测脚本工作以确保它仅在受影响的计算机上运行时,当针对已安装的KB进行测试时,无法使其正确输出true或false。

到目前为止,这是我正在运行的。无论我做什么,都会输出false。有什么明显的我想念的吗?

if ((get-hotfix).hotfixid -eq "KB971033") {$true} else {$false}

4 个答案:

答案 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***"