在没有对配置和设置进行任何更改的情况下,WSUS 服务器在定期与 Microsoft 同步后开始下载从 2009 年到现在(2020 年)的数百个旧更新。它下载了超过 100 GB,我不知道这种行为的原因是什么。我该如何处理?
答案1
这似乎是用户中常见的问题。使用尝试和错误方法找到摆脱不需要的更新的方法对我来说很有效。拒绝并删除所有旧更新无法解决问题,它们会在下次同步后再次出现。以下步骤解决了该问题:
如果带宽使用率过高且正在从 WSUS 下载,请断开互联网连接。
在 WSUS 控制台中停止服务器同步。
可能仍有更新等待下载,如下所示:
运行下面的 Powershel 脚本来取消所有更新。之后,下载状态将清除,更新所需文件将变为 0。
(Get-WsusServer).CancelAllDownloads() Stop-Service -Name WsusService,BITS -Force Remove-Item -Path $env:LOCALAPPDATA\Temp\* -Recurse -ErrorAction SilentlyContinue Remove-Item -Path $env:SystemRoot\Temp\* -Recurse -ErrorAction SilentlyContinue Start-Service -Name WsusService,BITS
在 WSUS 选项页面中禁用“自动批准”,并确保选中仅在批准时下载更新的选项:
拒绝最近下载的所有不需要的旧更新。您可以按到达日期对更新进行排序,然后选择并拒绝所有最近到达的旧更新。
使用以下 Powershell 脚本删除所有被拒绝的更新。如果您拒绝了不想被删除的更新,您可以通过修改脚本(例如按到达日期)来缩小选择范围:
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer(); $declined=$wsus.GetUpdates() | Where {$_.IsDeclined -eq $true} $declined| ForEach-Object {$wsus.DeleteUpdate($_.Id.UpdateId.ToString()); Write-Host $_.Title removed }
运行服务器清理。确保检查所有与更新相关的项目。
开始同步。等待同步完成。在此级别,同步将花费很长时间,将下载几 GB 的数据,并且所有旧更新列表将返回(如果没有返回,祝您好运),但由于我们在级别 4 的操作,它们的文件不会下载。
重复第 5 级,但这次针对“未批准”的更新。
重复级别 6。我建议在“Powershell ISE”中运行此脚本进行多次更新(例如 30 次更新,而不是一次全部更新),然后停止它并运行级别 11 以确保您走在正确的道路上。
重复第 7 级和第 8 级。在此级别,服务器不应再进行旧的下载。
如果愿意,可以将第 4 级更改的自动批准和下载设置恢复为之前的状态。
答案2
在我的安装中,用户 @harsini 在步骤 6 中提供的删除拒绝更新的脚本总是会超时,因为它首先从 WSUS 服务器获取所有更新,然后才在 PS 端将其范围缩小到拒绝的更新。
替换
$declined = $wsus.GetUpdates() | Where {$_.IsDeclined -eq $true}
和
$declined = $wsus.GetUpdates([Microsoft.UpdateServices.Administration.ApprovedStates]::Declined, [DateTime]::MinValue, [DateTime]::MaxValue, $null, $null)
直接从 WSUS 服务器获取被拒绝的更新。