windows 修补程序的检测脚本

Detection script for windows hotfixes

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

到目前为止,这就是我 运行 的内容。无论我做什么,它都会输出 false。我遗漏了什么明显的东西吗?

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

也许试试

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

“$”将使 "Get-Hotfix" 结果成为一个成员为“.hotfixID”的对象。

在我的 Windows Server 2016 环境中,您的代码工作正常...可能未安装修补程序或未在 'get-hotfix'

中列出

否则你可以试试这个:

$HotfixID= "KB971033"
IF((get-hotfix).hotfixid | ?{ $_ -eq $HotfixID}){$true} else {$false}

它也适用于远程计算机:

(get-hotfix).hotfixid -ComputerName "***SomeDNSName / FQDN***"

(get-hotfix).hotfixid returns 一个数组,所以你不应该将它与 -eq.

进行比较

应该这样做:

((Get-HotFix  | Select-Object -ExpandProperty HotFixID) -contains 'KB971033')

或简称:

(((Get-HotFix).HotFixID) -contains 'KB971033')

IMO 在测试一个不同的修补程序时筛选所有修补程序是非常低效的。

if (Get-Hotfix -ID KB971033 -EA 0) {$true} else {$false}

-EA 0-ErrorAction SilentlyContinue

的缩写