Автоматическая очистка WSUS-сервера

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

На сервере с установленной ролью WSUS имеется специальный командлет для этой цели – Invoke-Wsus Server Cleanup. Он делает то же самое, что и запуск процедуры очистки из консоли управления WSUS.

Минимальный скрипт выглядит так:

Get-WSUSServer | Invoke-WsusServerCleanup -CleanupObsoleteComputers -CleanupObsoleteUpdates -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates

Можно сохранить его в файл, например, wsuscleanup.ps1 и настроить запуск по расписанию, например, раз в неделю.

Если же мы хотим видеть результат выполнения скрипта в журнале событий Windows, его придется немного доработать. Сначала необходимо создать журнал для этого источника (делается один раз и пользователем с правами администратора):

New-EventLog -LogName Application -Source "WSUSCleanup"

В итоге скрипт у меня получился вот такой:

$WSUSServer = Get-WsusServer
$result = Invoke-WsusServerCleanup -UpdateServer $WSUSServer -CleanupObsoleteComputers -CleanupObsoleteUpdates -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates
$message = Out-String -InputObject $result
Write-EventLog -Logname Application -EventID 0 -Source "WSUSCleanup" -Entrytype Information -Message $message

В итоге результат выполнения выводится в журнал событий:

 

Добавить комментарий