我使用下面的代码来获取Windows服务器中已安装的软件补丁列表,但我无法找到完全匹配,如下面用于获取补丁列表历史记录的代码。意味着它在卸载后也会显示相同的细节。在安装和卸载操作后,您能帮助我获得唯一可用的软件补丁列表吗?
$Session = New-Object -ComObject "Microsoft.Update.Session"
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$a = $Searcher.QueryHistory(0, $historyCount) | Select-Object Title
$a
根据来自@OP的n个信息进行更新。
现在搜索给定KBArticleID的所有(非隐藏)更新,以确定它是否已安装。
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa386526(v=vs.85).aspx
$session = New-Object -ComObject "Microsoft.Update.Session"
$searcher = $session.CreateUpdateSearcher()
$searchResults = $searcher.Search("IsHidden = 0")
$updates = $searchResults.Updates
$kbid = "4054517"
$updates | Where-Object KBArticleIDs -Contains $kbid | Select-Object Title, IsInstalled
请注意,这可能包括多个结果,例如