卸载更新的常见原因是它们有错误或在特定环境中导致问题。删除它们只是为了让 PC 不受限制地恢复和运行而采取的短期措施。但特别是对于安全更新,它不是一个永久的解决方案。



批准卸载更新

通常,您可以允许或拒绝安装更新,但也可以批准删除这些更新。

可以使用 WSUS 控制台的 GUI 完成此操作。最大的挑战是在过滤选项非常有限的情况下,在长列表中找到错误的更新。

实现此目标后,标记不需要的更新,并检查“可移动”下部分的详细信息,以查看它是否支持卸载。



卸载gem 卸载更新和卸载的区别_卸载gem

检查是否可以删除更新


如果可以,请从其上下文菜单中选择“批准”命令。在出现的对话框中,打开相应计算机组的下拉菜单,然后选中“批准删除”选项。


卸载gem 卸载更新和卸载的区别_windows_02

批准要删除的更新


如果要设置客户端立即开始删除更新的日期,请打开用于再次批准更新的对话框,然后对同一计算机组运行“截止时间”命令。


卸载gem 卸载更新和卸载的区别_windows_03

指定客户端应删除相关更新的日期


如果未指定截止时间,则仅当新更新挂起安装时,PC 才会删除不需要的更新。

成功批准后,如果已将操作应用于所有计算机,则概述中的更新状态将更改为“删除”。但是,如果仅将卸载操作分配给一个组,控制台将在“审批”列中显示“混合”。


卸载gem 卸载更新和卸载的区别_服务器_04

发布后用于卸载的更新的批准状态


使用 PowerShell 卸载更新

由于“批准-WSUSUpdate ”cmdlet 提供了所有审批选项,因此还可以使用该 cmdlet 配置要删除的更新。

像往常一样,第一步是连接到 WSUS 服务器:


$wsus = Get-WsusServer -Name wsus.contoso.com -PortNumber 8530


如果在服务器上本地运行命令,则可以省略参数“名称”和“端口号”。

接下来,按更新的 ID 引用更新。这是一个 GUID,很遗憾无法从$wsus获得。SearchUpdates() 如果你只知道 KB。在这种情况下,您必须在更新目录中查找 GUID 或使用此脚本




$kb = Read-Host -Prompt "Search for which KB?"
$uc = Invoke-WebRequest -Uri "https://www.catalog.update.microsoft.com/Search.aspx?q=$kb"
$uc.Links | where onClick -Like "*goToDetails*"|
foreach {$_.innerText + ";" + $_.id -replace '_link',''} |
ConvertFrom-Csv -Delimiter ";" -Header "Description","ID"|
Out-GridView -PassThru | Format-List



找到 UpdateId 后,将其传递给以下命令:


$u = Get-WsusUpdate -UpdateServer $wsus -UpdateId "<GUID>"


然后,检查更新是否支持卸载:


$u.Removable


如果为真,下一步是输出所有计算机组的名称:


$wsus.GetComputerTargetGroups()


在批准删除的最后一个命令中,将 TargetGroupName 参数设置为所需的计算机组:


$u | Approve-WsusUpdate -Action Uninstall -TargetGroupName "IT"


卸载gem 卸载更新和卸载的区别_服务器_05

PowerShell 中允许卸载更新的步骤


PowerShell 中允许卸载更新的步骤

如果现在再次调用以下内容:


Get-WsusUpdate -UpdateServer $wsus -UpdateId "<GUID>" | select Approved


结果应为“卸载”。

总结

WSUS 提供了删除大量计算机上不需要的更新的可能性。为此,您必须批准它们进行卸载。