为什么 Powershell 中的“get-hotfix”和“wmic qfe list”缺少已安装的更新?

a p*_*erd 7 windows powershell hotfix

我正在尝试编写脚本以确保安装了某个修补程序。在我们的一台运行 Windows 8.1 的测试计算机上,get-hotfix返回不完整的修补程序列表:

在此处输入图片说明

然而,程序和功能控制面板中显示了大量补丁:

在此处输入图片说明

我们所有的其他测试机器,包括其他安装了 Windows 8.0 和 8.1 的机器,都可以正常工作。知道这是为什么吗?如何从 Powershell 获取完整的修补程序列表?

编辑:也 wmic qfe list只显示相同的四个修补程序get-hotfix

ben*_*tek 12

我相信Get-Hotfix命令行开关利用Win32_QuickFixEngineeringWMI 类来列出 Windows 更新,但只返回由基于组件的服务 (CBS)提供的更新。Get-Hotfix/不返回 Microsoft Windows Installer (MSI) 或 Windows 更新站点提供的更新Win32_QuickFixEngineering

您可以尝试通过 PowerShell 使用 Windows Update API,如下例所示。试一试,如果它显示丢失的更新,请告诉我们。

$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Searcher.Search("IsInstalled=1").Updates | ft -a Date,Title
Run Code Online (Sandbox Code Playgroud)

编辑:要搜索结果,您可以使用Where-Object 命令行开关(或别名Where)并过滤特定的修补程序:

$Searcher.Search("IsInstalled=1").Updates | Where {$_.Title -like "*KB2760587*"} | ft date,title
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考:另请参阅:https://social.technet.microsoft.com/wiki/contents/articles/4197.how-to-list-all-of-the-windows-and-software 下的“Microsoft 更新客户端安装历史记录” -updates-applied-to-a-computer.aspx 用于此解决方案的不同版本(对我而言,上述操作失败了,但它使我找到了这个有效的 Technet 链接)。 (2认同)