可使用 Get-HotFix cmdlet 查询 Windows 已安装补丁状态,它通过 WMI 获取信息,无需联网且不依赖 Windows Update 服务;支持查看全部补丁、按时间排序、筛选字段、精确或模糊查找 KB 编号、导出 CSV 等操作,并需注意权限及部分更新不显示等限制。
可以使用 powershell 查询 windows 已安装补丁状态,最常用、最可靠的方式是调用 get-hotfix cmdlet。它直接读取系统 wmi 中的补丁信息,无需联网、不依赖 windows update 服务状态,适合批量检查和脚本自动化。
查看所有已安装补丁(基础用法)
Get-HotFix 默认列出全部已安装的更新(包括 KB 编号、安装时间、来源等)。执行后会显示类似以下字段:HotFixID(如 KB5034441)、InstalledBy、InstalledOn、Caption。
- 运行命令:Get-HotFix
- 若想按安装时间倒序排列,加参数:Get-HotFix | Sort-Object InstalledOn -Descending
- 只看 KB 编号和日期,可筛选输出:Get-HotFix | Select HotFixID, InstalledOn | Sort-Object InstalledOn -Descending
按 KB 编号精确查找特定补丁
当需确认某个补丁(例如 KB5034441)是否已安装,可用 -Id 参数或管道过滤:
- 直接查指定 KB:Get-HotFix -Id KB5034441(注意:KB 前缀必须大写,且不能带空格)
- 模糊匹配(含部分编号):Get-HotFix | Where-Object {$_.HotFixID -like "*KB5034*"}
- 查多个 KB 是否存在,可组合成数组判断:$kbs = "KB5034441","KB5035845"; $kbs | ForEach-Object { Get-HotFix -Id $_ -ErrorAction SilentlyContinue } | Select HotFixID, InstalledOn
导出补丁列表到 CSV 文件(便于归档或分析)
将结果保存为结构化文件,方便后续比对或导入 Excel:
- 导出全部补丁:Get-HotFix | Select HotFixID, InstalledOn, InstalledBy, Caption | Export-Csv -Path "$env:USERPROFILE\Desktop\InstalledPatches.csv" -NoTypeInformation -Encoding UTF8
- 导出最近 30 天安装的补丁:Get-HotFix | Where-Object {$_.InstalledOn -gt (Get-Date).AddDays(-30)} | Export-Csv ...
- 提示:导出路径中使用
$env:USERPROFILE更通用,避免硬编码用户名
补充说明与注意事项
Get-HotFix 返回的是系统注册表/WMI 中记录的“已安装”状态,但存在几个常见限制:
- 不显示已卸载或被替代的补丁(如累积更新会覆盖旧 KB,旧条目通常消失)
- 某些 .NET 或驱动更新可能不体现为 HotFix,需结合
DISM /Online /Get-Packages或Get-WindowsUpdateLog辅助判断 - 在 Server Core 或 Nano Server 上仍可用;但需管理员权限才能看到完整 InstalledBy 字段
- 若返回空结果,先确认是否以管理员身份运行 PowerShell——部分系统信息受权限限制


















