Get-HotFix 是什么
Get-HotFix 读取 Windows 的 Win32_QuickFixEngineering 类,列出本机已安装补丁的 KB 编号、描述与安装时间,是最快的“这台机器装过什么”入口。它主要覆盖随操作系统发布的更新,月度累积更新通常只留一条汇总记录,部分仅组件级的更新根本不出现。因此它适合快速核查与时间线判断,不适合单独用来证明“补丁已打全”。
基本信息
| 适用平台 | Windows Server 2012+ / Windows 10、11(PowerShell 5.1 及以上) |
|---|---|
| 权限要求 | 本机普通用户可读;跨机查询需远程管理权限与 WinRM |
| 加固项 | 补丁状态可核查 |
| 基线 | 关键 KB 在列且有合理安装时间 |
| 替代命令 | wmic qfe list brief(老系统) |
典型使用场景
- 交付验收:接手主机的第一时间拉补丁清单存档
- 事件复盘:用安装时间建立时间线,判断漏洞窗口期
- 例行巡检:与上一轮基线对比,发现补丁被卸载或回滚
- 批量收集:对一组服务器同时取清单做横向比对
- 与 MSRC 公告对照:确认本月关键 KB 是否在列
清单与筛选
清单与筛选
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 20 HotFixID, Description, InstalledOn # 最近安装
Get-HotFix | Where-Object {$_.HotFixID -match 'KB50|KB51'} | Select-Object HotFixID, InstalledOn # 按月筛选
wmic qfe list brief /format:table # 老系统上的等价命令
Get-HotFix -ComputerName web01,web02 | Select-Object PSComputerName, HotFixID, InstalledOn # 跨机核对
Get-CimInstance Win32_QuickFixEngineering | Measure-Object # 统计条数,便于横向比对输出逐列读法
| 列/字段 | 含义 | 正常与异常 |
|---|---|---|
| HotFixID | 补丁编号 KBxxxxxxx | 发现关键 KB 缺失=需补齐 |
| Description | 更新类型,如 Security Update | 全为 Update 无安全更新=疑似只打常规补丁 |
| InstalledOn | 安装日期 | 日期早于本次维护窗口=本轮未安装 |
| InstalledBy | 安装者 | NT AUTHORITY\SYSTEM 或管理员账号为正常 |
| Source | 补丁来源标识 | 操作系统维护的更新此处多为空值 |
要下“已打全”的结论,用“已装更新历史 + 系统版本号”交叉验证:Win32_QuickFixEngineering 并不收录全部更新类型。
补丁已安装但未重启时处于待生效状态:列表显示出补丁,运行的仍是旧代码,验证要结合重启完成情况。
核查要点
- 清单要连安装时间一起存档:只记 KB 编号无法判断补丁是本月装的还是半年前装的
- 与上一轮基线比对才能发现补丁被卸载或回滚,单次快照说明不了过程
- 关键 KB 与 MSRC 公告逐条对照:公告有而清单无,就是确定的缺失项
- 跨机收集统一走 WinRM 或集中管理平台,避免网络不通造成的假缺失
- 把清单导出成 CSV 归档,报告里能直接回答关键补丁是否在列
远程批量查询建议用 Get-CimInstance 加 -ComputerName,或直接查集中管理平台:逐台登录既慢又容易漏项。