Назад | Перейти на главную страницу

WSUS загружает сотни старых отклоненных обновлений

Не применяя никаких изменений в конфигурации и настройках, сервер WSUS начинает загружать сотни старых обновлений с 2009 г. по настоящее время (2020 г.) после регулярной запланированной синхронизации с Microsoft. Он загрузил более 100 ГБ, и я не знаю, в чем причина такого поведения. Как мне с этим справиться?

Кажется, это не редкость, и вы могли увидеть, что у других была аналогичная проблема, поискав в Интернете. Я использовал метод проб и ошибок, чтобы найти способ избавиться от нежелательных обновлений. Отклонение и удаление всех этих старых обновлений не решит для меня проблему, и они вернутся обратно после следующей синхронизации. Я использовал следующие шаги, которые решают проблему:

  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. Начать синхронизацию. Дождитесь завершения синхронизации. На этом уровне синхронизация займет много времени, будет загружено несколько гигов, и весь список старых обновлений вернется (удачи вам, если этого не произойдет), но их файлы не будут загружены из-за наших действий на уровне 4.

  5. Повторите уровень 5, но на этот раз для «Неутвержденных» обновлений.

  6. Повторите уровень 6. Я рекомендую запустить этот сценарий в «Powershell ISE» для количества обновлений (например, 30 обновлений, а не все сразу), затем остановить его и запустить уровень 11, чтобы убедиться, что вы на правильном пути.

  7. Повторите уровни 7 и 8. На этом уровне сервер больше не должен выполнять старые загрузки.

  8. Верните автоматическое утверждение и настройку загрузки, измененную на уровне 4, в предыдущий статус, если хотите.