如何在PowerShell中过滤Windows可用更新,排除安全智能更新
如何过滤Windows可用更新列表中的特定项?
你可以通过两种方式实现过滤不需要的更新的需求,下面分别给出具体修改方案:
方法一:在搜索阶段直接过滤(效率更高)
直接修改Search方法的查询条件,加入排除特定标题的规则,系统在搜索更新时就会直接忽略符合排除条件的项,无需后续处理。
修改后的完整代码:
$UpdateSession = New-Object -ComObject Microsoft.Update.Session $UpdateSearcher = $UpdateSession.CreateupdateSearcher() # 在查询条件中添加排除规则,过滤掉标题包含指定内容的更新 $searchQuery = "IsHidden=0 and IsInstalled=0 and AutoSelectOnWebSites = 1 and not Title contains 'Security Intelligence Update for Microsoft Defender Antivirus'" $Updates = @($UpdateSearcher.Search($searchQuery).Updates) $Updates.Title
方法二:获取结果后再过滤(更灵活)
如果需要更复杂的过滤逻辑,或者不确定具体关键词,可以先获取所有更新,再用Where-Object筛选掉不需要的项。
修改后的完整代码:
$UpdateSession = New-Object -ComObject Microsoft.Update.Session $UpdateSearcher = $UpdateSession.CreateupdateSearcher() $Updates = @($UpdateSearcher.Search("IsHidden=0 and IsInstalled=0 and AutoSelectOnWebSites = 1").Updates) # 过滤掉标题匹配指定关键词的更新 $filteredUpdates = $Updates | Where-Object { $_.Title -notmatch 'Security Intelligence Update for Microsoft Defender Antivirus' } $filteredUpdates.Title
补充说明
- 若要过滤多个不同类型的更新,可以扩展过滤规则:
- 方法一中用
and not Title contains '关键词1' and not Title contains '关键词2' - 方法二中用
$_.Title -notmatch '关键词1|关键词2'(通过正则匹配多个关键词)
- 方法一中用
- 也可以根据更新的KB编号精准过滤,比如方法二中用
$_.KBArticleIDs -notcontains 'KB2267602'
内容的提问来源于stack exchange,提问作者Randula
相关产品推荐
相关产品推荐

