WSUS 正在下载数百个旧的被拒绝的更新

WSUS 正在下载数百个旧的被拒绝的更新

在没有对配置和设置进行任何更改的情况下,WSUS 服务器在定期与 Microsoft 同步后开始下载从 2009 年到现在(2020 年)的数百个旧更新。它下载了超过 100 GB,我不知道这种行为的原因是什么。我该如何处理?

答案1

这似乎是用户中常见的问题。使用尝试和错误方法找到摆脱不需要的更新的方法对我来说很有效。拒绝并删除所有旧更新无法解决问题,它们会在下次同步后再次出现。以下步骤解决了该问题:

  1. 如果带宽使用率过高且正在从 WSUS 下载,请断开互联网连接。

  2. 在 WSUS 控制台中停止服务器同步。

    可能仍有更新等待下载,如下所示:

在此处输入图片描述

  1. 运行下面的 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
    
  2. 在 WSUS 选项页面中禁用“自动批准”,并确保选中仅在批准时下载更新的选项:

在此处输入图片描述

  1. 拒绝最近下载的所有不需要的旧更新。您可以按到达日期对更新进行排序,然后选择并拒绝所有最近到达的旧更新。

  2. 使用以下 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 }
    
  3. 运行服务器清理。确保检查所有与更新相关的项目。

  4. 开始同步。等待同步完成。在此级别,同步将花费很长时间,将下载几 GB 的数据,并且所有旧更新列表将返回(如果没有返回,祝您好运),但由于我们在级别 4 的操作,它们的文件不会下载。

  5. 重复第 5 级,但这次针对“未批准”的更新。

  6. 重复级别 6。我建议在“Powershell ISE”中运行此脚本进行多次更新(例如 30 次更新,而不是一次全部更新),然后停止它并运行级别 11 以确保您走在正确的道路上。

  7. 重复第 7 级和第 8 级。在此级别,服务器不应再进行旧的下载。

  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 服务器获取被拒绝的更新。

相关内容