В том случае, если вы устанавливаете обновления Microsoft на компьютеры и сервера компании с собственного сервера WSUS, вы, вероятно, перед установкой обновлений выполняете их тестирование на пилотных группах компьютерах или серверах (разнести компьютеры и сервера по разным группам WSUS можно с помощью GPO). Как показывает практика последних лет, нельзя оставлять WSUS, настроенным на автоматическое одобрение всех новых обновлений сразу на продуктивные системы (Microsoft выпускает очень много сырых и недостаточно протестированных обновлений).
На WSUS сервере можно организовать несколько различных групп обновлений. Классическая схема одобрения новых обновлений на WSUS сервере сводится к тому, что сначала выполняется их тестирование на тестовых группах ПК и серверов (допустим группах Workstation_Testи Servers_Test), на которых в настройках WSUS созданы правила автоматического одобрения всех новых критических обновлений и обновлении безопасности (WSUS -> Options -> Automatic Approvals -> Default Automatic Approval Rule).
После того, как новые обновления установлены на тестовую группу и получено подтверждение, что обновления не вызвали проблем у пользователей (обычно тестирование занимает 3-4 дня), необходимо одобрить новые обновления для установки на продуктивные группы. Но как это сделать, чтобы не пришлось вручную выбирать новые обновления и одобрять их установку на все компьютеры и сервера? Я покажу два довольно простых способа переноса одобренных обновлений с тестовых групп WSUS на продуктивные.
Способ переноса одобренных обновлений в консоли WSUS
Вы можете достаточно удобно вручную скопировать одобренные обновления с тестовой группы WSUS на продуктивную группу компьютеров/серверов. Для этого нужно правильно настроить консоль Update Services.
В разделе Updates нужно создать новое представление для одобренных обновлений тестовой группы. Для этого выберите пункт меню New Update View.
В открывшемся мастере выберите пункт “Updates are approved for a specific group” (одобрения, одобренные для указанной группы) и укажите имя тестовой группы WSUS (Workstation_test). Укажите имя нового представления.
Выберите созданное вами представление и в меню фильтров выберите пункт Approval=”Approved” и Status=”Any”. Щелкнув по заголовку таблицы добавьте столбец, в котором указана дата выпуска обновления (Release Date). Щелкнув по имени столбца, отсортируйте список обновления, чтобы новые обновления оказались вверху.
Как вы видите, теперь в списке можно легко найти новые обновления и проверить статус их установки. С помощью клавиш Shift и/или Ctrl можно выбрать все необходимые обновления, которые нужно одобрить на продуктивных системах, вызвать контекстное меню правым щелчком мыши и выбрать пункт Approve. В списке групп WSUS выберите продуктивные группы, для которых нужно одобрить выделенные обновления и выберите пункт Approved for Install.
Теперь новые обновления будут устанавливать и на продуктивных системах.
Копирование одобренных обновлений между группами WSUS с помощью PowerShell
В том случае, если у вас имеется множество групп обновлений на WSUS сервере, перенос одобренных обновлений с тестовых групп на продуктивные можно автоматизировать с помощью PowerShell. У меня получился такой скрипт, в котором нужно указать FQDN имя сервера WSUS, и имя групп, между которыми нужно скопировать одобренные обновления.
$WsusServerFqdn='msk-wsus.winitpro.loc'
$WsusSourceGroup = 'Workstation_Test'
$WsusTargetGroup = 'WorkstationProduction'
[void][reflection.assembly]::LoadWithPartialName( «Microsoft.UpdateServices.Administration»)
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer( $WsusServerFqdn, $False, ‘8530’)
$Groups = $wsus.GetComputerTargetGroups()
$WsusSourceGroupObj = $Groups | Where {$_.Name -eq $WsusSourceGroup}
$WsusTargetGroupObj = $Groups | Where {$_.Name -eq $WsusTargetGroup}
$Updates = $wsus.GetUpdates()
$i = 0
ForEach ($Update in $Updates)
{
if ($Update.GetUpdateApprovals($WsusSourceGroupObj).Count -ne 0 -and $Update.GetUpdateApprovals($WsusTargetGroupObj).Count -eq 0)
{
$i ++
Write-Host («Approving » + $Update.Title)
}
}
Write-Output («Approved {0} updates for target group {1}» -f $i, $WsusTargetGroup)
Данный PowerShell скрипт последовательно перебирает все одобренные обновления в исходной группе WSUS и, если обновление не одобрено на целевой группе, одобряет его установку. В данном примере скрипт одобрил 64 обновления, которые были одобрены в тестовой группе и отсутствовали в продуктивной.