在WSUS中删除更新

WSUS中更新的管理逻辑

如果你探索过WSUS控制台界面,就会发现WSUS只给你提供了批准(Approve)和拒绝(Decline)更新的选项,并无办法删除更新。
在这里插入图片描述
如果你去WSUS服务器清理导向(WSUS Server Cleanup Wizard)中,也会发现只有删除已被拒绝三十天以上更新的选项。
在这里插入图片描述

那如果你想立刻删除一个更新,或者不小心同步(Synchronise)了不必要微软产品的更新,又该怎么做?

绕过控制台删除更新

好在,微软仍然给我们留下了一些空间来绕过这个愚蠢的强制设计。我们可以通过Powershell命令强行删除更新。

第1步:拒绝不必要的更新

首先,你需要在控制台中选中所有你不想要的更新,并通过右键拒绝他们。该控制台的设计非常老旧,并无直接的多选按钮。
要想连续多选,点击起始项,按住Shift键,再点击末尾项。
要想在不取消选择其它项的情况下单选,按住Ctrl键,单击所有你要勾选的项。
在这里插入图片描述

第2步:删除更新元数据

这将删除更新,使它们不会在控制台里显示,但不会删除关于他们的更新安装包本身(如果你曾下载过它们;它们将被储存在WSUS内容文件夹内)。不过不需要担心,这些安装包也可以被删除。
将下面的代码保存为一个后缀为.ps1的文本文件 然后在Windows Powershell ISE中执行。你将能够列出当前所有的被拒更新。

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$declined=$wsus.GetUpdates() | Where {$_.IsDeclined -eq $true}
$declined.Count

在这里插入图片描述
如果该脚本无误地列出了你期望看到的被拒更新,那么接下来就是时候删除它们了。使用下面是Powershell脚本删除更新。

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$loopcontrol=$wsus.GetUpdates() | Where {$_.IsDeclined -eq $true}
$control=$loopcontrol.Count
DO{
Write-Host "$control left to go"
$declined=$wsus.GetUpdates() | Where {$_.IsDeclined -eq $true}| Select-Object -First 1000
$declined| ForEach-Object {$wsus.DeleteUpdate($_.Id.UpdateId.ToString()); Write-Host $_.Title removed}
$control=$control-1000
} Until ($control -lt 0)

第3步:删除更新安装包(WSUS Content)

到目前为止,我们只删除了更新在WSUS数据库中的元数据,因此它们不再在WSUS控制台中显示。然而,它们对应的更新安装包,如果你下载了的话,仍保留在WSUS内容文件夹中没有删除。
要想删除安装包,打开WSUS服务器清理导向,勾选删除不被任何更新或下游服务器需要的更新文件。这将清理那些在数据库中找不到对应元数据的更新安装包。
在这里插入图片描述

如果你选择同步了非必要微软产品的更新…

你可以日后很轻松地在产品和分类中作出更改。
在这里插入图片描述

参考资料

必须注明的是,本文中的Powershell脚本并非我所创,而是由这篇帖子里的用户kevinhughes2所编写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值