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

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

0
задан 19 May 2020 в 10:23
2 ответа

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

  1. Отключите Интернет, если используется высокая пропускная способность и выполняется загрузка с WSUS.

  2. Остановить синхронизацию сервера в консоли WSUS.

    Могут быть обновления, все еще ожидающие загрузки, например:

enter image description here

  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 и убедитесь, что установлен флажок для загрузки обновлений только в том случае, если они утверждены:

enter image description here

  1. Отклонить все нежелательные старые обновления, загруженные недавно. Вы можете сделать это, отсортировав обновления по дате прибытия, а затем выбрав и отклонив все старые обновления, которые были получены недавно.

  2. Используйте приведенный ниже сценарий Powershell, чтобы удалить все отклоненные обновления. Вы можете сузить свой выбор, изменив сценарий (например, по дате прибытия), если вы отклонили обновления, которые не хотели бы удаляться:

      [Reflection.assembly] :: LoadWithPartialName ("Microsoft.UpdateServices.Administration")
    $ wsus = [Microsoft.UpdateServices.Administration.AdminProxy] :: GetUpdateServer ();
    $ отклонено = $ wsus.GetUpdates () | Где {$ _. IsDeclined -eq $ true}
    $ отказался | ForEach-Object {$ wsus.DeleteUpdate ($ _. Id.UpdateId.ToString ()); Write-Host $ _. Заголовок удален}
    
  3. Запустить очистку сервера. Убедитесь, что вы отметили все элементы, связанные с обновлениями.

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

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

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

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

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

2
ответ дан 23 April 2020 в 08:14

В моей установке сценарий, заданный на шаге 6 пользователем @harsini для удаления отклоненных обновлений, всегда приводил к тайм-аутам, потому что он сначала получает ВСЕ обновления с сервера WSUS и только после этого сужает их до отклоненных на стороне PS.
Замените

$declined = $wsus.GetUpdates() | Where {$_.IsDeclined -eq $true}

на

$declined = $wsus.GetUpdates([Microsoft.UpdateServices.Administration.ApprovedStates]::Declined, [DateTime]::MinValue, [DateTime]::MaxValue, $null, $null)  

, чтобы получать только отклоненные обновления непосредственно с сервера WSUS.

1
ответ дан 30 September 2021 в 16:16

Теги

Похожие вопросы