![为什么 Powershell 中的“get-hotfix”和“wmic qfe list”缺少已安装的更新?](https://linux22.com/image/1473854/%E4%B8%BA%E4%BB%80%E4%B9%88%20Powershell%20%E4%B8%AD%E7%9A%84%E2%80%9Cget-hotfix%E2%80%9D%E5%92%8C%E2%80%9Cwmic%20qfe%20list%E2%80%9D%E7%BC%BA%E5%B0%91%E5%B7%B2%E5%AE%89%E8%A3%85%E7%9A%84%E6%9B%B4%E6%96%B0%EF%BC%9F.png)
答案1
我相信Get-Hotfix
命令行程序利用了Win32_QuickFixEngineering
WMI 类列出 Windows 更新,但仅返回由基于组件的服务 (CBS)Get-Hotfix
. /不返回 Microsoft Windows Installer (MSI) 或 Windows 更新站点提供的更新Win32_QuickFixEngineering
。
您可以尝试通过 PowerShell 使用 Windows 更新 API,如以下示例所示。试一试,如果它显示缺少更新,请告诉我们。
$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Searcher.Search("IsInstalled=1").Updates | ft -a Date,Title
编辑:要搜索结果,您可以使用Where-Object
命令行(或别名Where
)并过滤特定的修补程序:
$Searcher.Search("IsInstalled=1").Updates | Where {$_.Title -like "*KB2760587*"} | ft date,title
答案2
您需要使用不同的方法来列出通过不同方法安装的更新。例如通过 wsus 或 configmgr 安装的更新
看看这里
答案3
如果有一天有人需要使用 Python 获取完整的更新列表,我已经编写了通过 COM、WMI 和注册表检查 Windows 更新的实现,这样我们就不会错过基于其安装方法的更新。
安装方式:
pip install windows_tools.updates
用法
from windows_tools.updates import get_windows_updates
for update in get_windows_updates(filter_duplicates=True):
print(update)
您还可以使用以下命令删除重复的过滤器(AV 引擎更新等)get_windows_updates(filter_multiple=False)