我试图弄清楚 WUA(Windows 更新代理 API)IupdateSearcher 和 wmic qfe 列表之间有什么区别。
当我使用时,我会得到不同的结果:
(New-Object -ComObject Microsoft.Update.Session).CreateUpdateSearcher().Search('IsInstalled=1').Updates | Format-Table -AutoSize
当使用 wmic qfe 列表时:
wmic qfe list brief
后者包含前者不包含的更新,反之亦然。这是为什么呢?
例如,KB5007273 出现在 wmic 上,但未出现在 WUA 上,反之亦然,例如,KB4023057 出现在 WUA 上,但未出现在 wmic 上
答案1
- 威盛
...它们只能可靠地用于检索 Windows 操作系统本身及其组件(例如 Windows Internet Explorer (IE) 或 Windows Server 角色和功能)的更新。这不会列出任何非收件箱软件(例如 Microsoft Office 或 Exchange Server)的更新。
- 用水户协会
...将列出所有类型的更新(Windows 和应用程序),但仅列出使用 Windows 更新安装的更新。[...] 排除任何手动安装或使用自定义管理脚本的更新。
尽管如此,您似乎没有找到合适的地方来查找有关 WUA 的更新信息。例如:
# the updatesearcher() method excludes superseded updates:
$UpdateSearcher = (New-Object -ComObject Microsoft.Update.Session).CreateUpdateSearcher().Search('IsInstalled=1').Updates
$UpdateSearcher | Select Title
# returns 7 updates on my machine
# Instead, try searching your WUA history instead.
$WuaHistory = (New-Object -ComObject 'Microsoft.Update.Session').QueryHistory("",0,100) ## first 100 results
# only return successful(2) installations(1)
$WuaHistory | Where {$_.ResultCode -eq 2 -and $_.Operation -eq 1} | Select Title
# Returns 80 updates
在Windows 10 版本 1709,搜索被取代的更新的功能已被删除。