使用 PowerShell 检测缺失安全补丁最可靠的方法是调用 Windows Update 代理接口,通常通过安装 PSWindowsUpdate 模块实现。此操作需要管理员权限,在生产环境执行前必须确认变更窗口,避免自动安装导致业务中断。
先说结论:原生命令 Get-HotFix 仅显示已安装补丁,检测缺失补丁需依赖 PSWindowsUpdate 模块或 COM 对象。
- 先判断:确认当前系统网络可达且拥有本地管理员权限。
- 优先做:安装可信模块后运行查询命令,不要直接执行安装操作。
- 再验证:对比查询结果与微软安全公告,确认补丁状态。
命令速用版
若系统允许联网且信任 PowerShell Gallery,可直接使用以下命令序列检测缺失更新。
# 安装模块(仅需执行一次)
Install-Module -Name PSWindowsUpdate -Force
# 检测缺失补丁(不安装)
Get-WindowsUpdate
# 检测特定类型更新(仅安全更新)
Get-WindowsUpdate -Criteria "IsInstalled=0 and Type='Software' and CategoryIDs contains '0FA1201D-4330-4FA8-810B-1F933C0ACC88'"为什么会这样
Windows 系统原生 PowerShell 命令集缺少直接查询“缺失补丁”的接口。
Get-HotFix 命令只能读取注册表中的已安装更新记录,无法主动联系 Windows Update 服务器比对差异。PSWindowsUpdate 模块封装了 Microsoft.Update.Session COM 对象,能够模拟 Windows Update 客户端行为,向微软服务器请求当前系统适用的更新列表并筛选未安装项。
分步处理
按以下步骤操作可安全获取缺失补丁列表,避免误操作。
步骤 1:检查执行策略
确认 PowerShell 允许运行脚本,若报错需调整策略。
Get-ExecutionPolicy
# 若返回 Restricted,执行以下命令
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser步骤 2:安装更新模块
从 PowerShell Gallery 下载模块,需确认网络连接正常。
Install-Module -Name PSWindowsUpdate -Force步骤 3:查询缺失补丁
运行查询命令,记录返回的 KB 编号和标题。
Get-WindowsUpdate | Select-Object Title, KB, Size步骤 4:导出报告(可选)
将结果保存为 CSV 文件以便后续追踪。
Get-WindowsUpdate | Export-Csv -Path C:\temp\MissingUpdates.csv -NoTypeInformation怎么验证是否生效
通过重新运行查询命令和检查系统日志确认检测功能正常。
验证动作 1:重复查询
再次运行 Get-WindowsUpdate,若返回结果一致且无报错,说明接口调用成功。
验证动作 2:检查事件日志
打开事件查看器,定位到 Windows 日志 -> 应用程序,筛选来源为 WindowsUpdateClient 的事件,确认是否有成功的检测记录。
验证动作 3:交叉比对
选取返回的一个 KB 编号,在微软更新目录网站搜索,确认该补丁确实适用于当前系统版本。
常见坑
以下场景容易导致脚本执行失败或结果不准,需提前规避。
网络隔离环境
若服务器无法访问微软更新服务器,模块无法获取最新列表,结果可能为空或过时。
权限不足
未以管理员身份运行 PowerShell 会导致无法读取更新代理状态,命令返回访问拒绝错误。
模块信任问题
首次安装模块时若未配置信任库,会提示未签名脚本风险,需确认 Repository 为 PSGallery。
常见问题
没有管理员权限能检测补丁吗?
不能。读取 Windows Update 代理状态和查询缺失补丁需要本地管理员权限,否则命令会返回访问拒绝。
离线系统如何检测缺失补丁?
离线系统无法使用 PowerShell 直接检测,需在一台联网机器上下载 WSUS 离线扫描工具或手动比对 KB 列表。
Get-HotFix 为什么看不到缺失补丁?
Get-HotFix 仅读取本地注册表中的已安装历史记录,不具备联网比对功能,因此无法显示缺失项。
参考来源
Microsoft Learn - Get-HotFix 文档
URL: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-hotfix
PowerShell Gallery - PSWindowsUpdate 模块页
URL: https://www.powershellgallery.com/packages/PSWindowsUpdate