Для осуществления автоматической очистки базы обновлений WSUS нам понадобится следующий PowerShellскрипт, который вы можете найти также на сайте-первоисточнике:
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CompressUpdates = $true
$cleanupScope.CleanupObsoleteComputers = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope);
Давайте более детально рассмотрим имеющиеся опции скрипта, а также варианты его запуска по расписанию.
1) DeclineSupersededUpdates
Опция позволяет отклонять те обновления, которые в последующем были заменены более новыми версиями или же включены в пакеты обновлений (заменяемые обновления). Так, например, hotfix KB2403218 включен в накопительное обновление 6 для SQL Server 2008 R2 и будет отклонен при включенной опции DeclineSuperseded Updates. Кроме того, отклоняются обновления, которые не были подтверждены в течение 30 и более дней, а так же не востребованы ни одним клиентом.
2) DeclineExpiredUpdates
Позволяет отклонить просроченные обновления. Как правило, Microsoft выпускает новые обновления взамен просроченным, а просроченные - удаляет со своих потоковых серверов загрузки.
3) CleanupObsoleteUpdates
Удаляет из базы неиспользуемые и устаревшие обновления, включая все их ревизии. Удаляются те обновления и ревизии, которые не были подтверждены в течение 30 и более дней.
4) CompressUpdates
Удаляет из базы устаревшие ревизии обновлений.
5) CleanupObsoleteComputers
Удаляет из базы устаревшие компьютеры, которые не контактировали с сервером 30 и более дней.
6) CleanupUnneededContentFiles
Удаляет ненужные файлы обновлений. Включение этой опции позволяет освободить максимальный объем места на диске.
Итак, мы разобрались со всеми возможными опциями, используемыми для очистки базы службы WSUS через PowerShell скрипт. Осталось понять, в каком порядке лучше их указывать? Сперва, нам надо очистить список всех устаревших компьютеров, затем отклонить все заменяемые и просроченные обновления, и только лишь потом удалить их из базы. Таким образом, желательный порядок указания опций будет следующим:
$CleanUpScope.CleanupObsoleteComputers = $true
$CleanUpScope.DeclineSupersededUpdates = $true
$CleanUpScope.DeclineExpiredUpdates = $true
$CleanUpScope.CleanupObsoleteUpdates = $true
$CleanUpScope.CleanupUnneededContentFiles = $true
$CleanUpScope.CompressUpdates = $true
Я предлагаю использовать вам скрипт, в котором мы соблюдаем правильную последовательность указания опций и не используем две из них (CleanupObsoleteComputers и DeclineSupersededUpdates):
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
#$cleanupScope.CleanupObsoleteComputers = $true
#$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupScope.CompressUpdates = $true
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope);
Последнее, что нам осталось сделать, это автоматизировать процесс выполнения имеющегося powershellскрипта. Для этого предлагаю создать cmd файл, который надо скопировать в ту же папку, что и сам скрипт. Содержимое cmd файла:
@echo off
@echo Starting WSUS cleanup: %date% %time% >> d:\scripts\WSUS_Cleanup.log
powershell.exe d:\scripts\WSUS_Cleanup.ps1 >> d:\scripts\WSUS_Cleanup.log
@echo Finished WSUS cleanup: %date% %time% >> d:\scripts\WSUS_Cleanup.log
Здесь замените пути к файлам скрипта и лога, текст которых выделен красным цветом.
Всё! Теперь можно запускать этот cmd файл через Планировщик заданий по нужному вам графику.
Комментариев нет:
Отправить комментарий