You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Windows Server中当前已安装的补丁列表?

获取Windows Server当前实际已安装的补丁列表

嘿,你之前用的QueryHistory方法确实是拿更新操作的历史记录——不管补丁现在是不是还在系统里,只要曾经安装/卸载过,都会留下记录,所以卸载后的补丁自然还会显示出来。要获取当前系统实际已安装的补丁,得换个思路,直接查询系统里现存的更新项,给你几个靠谱的方法:

方法1:快速查看KB类补丁(Get-HotFix)

这是最常用的快速方法,直接返回已安装的KB编号补丁,适合日常排查:

Get-HotFix | Select-Object HotFixID, Description, InstalledOn, InstalledBy

注意:这个命令基于WMI的Win32_QuickFixEngineering类,优点是简单快捷,但只包含通过Windows Update安装的KB类补丁,像.NET框架更新、部分系统组件更新这类非KB的更新可能不会被列出。

方法2:获取完整的已安装更新(Microsoft.Update.Session)

和你原来用的COM对象属于同一体系,但我们要搜索当前已安装的更新,而不是历史记录:

$session = New-Object -ComObject Microsoft.Update.Session
$searcher = $session.CreateUpdateSearcher()
# 设置搜索范围为本地机器的已安装更新
$searcher.SearchScope = 1
# 搜索所有已安装的更新
$results = $searcher.Search("IsInstalled=1") | Select-Object -ExpandProperty Updates
# 提取关键信息输出
$results | Select-Object Title, KBArticleIDs, InstalledOn, IsInstalled

这个方法会返回所有通过Windows Update渠道安装的已更新项,包括KB补丁、功能更新、驱动更新、系统组件更新等,比Get-HotFix覆盖范围更全。其中KBArticleIDs字段会列出对应KB编号(部分更新可能无KB号),IsInstalled字段明确显示为True,确保是当前实际存在的补丁。

方法3:底层系统更新查询(DISM命令)

如果需要排查系统更新的底层组件包信息,可以用DISM命令:

# 查看所有已安装的系统包(表格格式)
dism /online /get-packages /format:table

或者筛选已安装的更新包:

dism /online /get-packages | Where-Object { $_ -match "Package Identity" -and $_ -match "Installed" }

DISM返回的是系统组件级别的包信息,适合系统修复、离线更新排查等场景,但输出格式相对繁琐。

额外提示

  • 运行这些命令需要管理员权限,否则可能无法获取完整的更新信息;
  • 如果需要过滤特定类型的更新(比如只看累积更新),可以在方法2的搜索语句里添加条件,例如:"IsInstalled=1 and Title like '%Cumulative Update%'"。

内容的提问来源于stack exchange,提问作者hasini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:02:32