Одобрение и развертывание обновлений WSUS в Windows Server
Одна из основных задач администратора WSUS (Windows Server Update Services) является управление обновлениями, одобренными для установки на компьютеры и сервера Windows. В этой статье мы покажем, как вручную одобрять обновления, настроить правила авто-одобрения и отзывать назначенные обновления с помощью консоли WSUS и PowerShell.
Целевые группы компьютеров WSUS
Служба WSUS на Windows Server после установки и настройки начинает регулярно скачивать обновления для выбранных продуктов с серверов Microsoft Update. Прежде чем компьютеры в вашей сети начнут скачивать и устанавливать новые обновления, их должен одобрить (или отклонить) администратор WSUS.
Перед установкой обновлений на продуктивные системы, их нужно обязательно протестировать на нескольких типовых рабочих станциях и серверах. Администратор WSUS должен создать группы компьютеров для тестирования обновления.
В зависимости от задач бизнеса, типов рабочих мест пользователей и категорий серверов можно создавать различные группы компьютеров. В общем случае в консоли WSUS в разделе Computers -> All computers имеет смысл создать следующие группы компьютеров:
- Test_Srv_WSUS — группа с тестовыми серверами (некритичные для бизнеса сервера и выделенные сервера с тестовой средой, идентичной продуктивной);
- Test_Wks_WSUS — тестовые рабочие станции;
- Prod_Srv_WSUS — продуктивные сервера Windows;
- Prod_Wks_WSUS — все рабочие станции пользователей.
Вы можете добавить компьютер или сервера в группы WSUS вручную либо вы можете привязать компьютеры и сервера к группам WSUS с помощью групповой политики Enable client-side targeting (Разрешить клиенту присоединение к целевой группе).
После того, как группы WSUS созданы, вы можете одобрить для них обновления. Есть два способа утверждения обновлений для установки на компьютерах: ручное и автоматическое обновление.
Ручное одобрение и установка обновлений через WSUS
Откройте консоль управления WSUS (Update Services) и выберите секцию Updates. В ней отображается список доступных обновлений. В этом разделе есть 4 подраздела: All Updates, Critical Updates, Security Updates и WSUS Updates. Найдите обновление, которые вы хотите распространить на компьютеры. Можно воспользоваться поиском в консоли WSUS по номеру KB, или отсортировать обновления по дате выпуска.
В консоли WSUS можно применять различные фильтры. Выведите список еще не утвержденных обновлений (фильтр — Approval=Unapproved, Status=Any). Найдите нужное обновление, щелкните по нему ПКМ и выберите в меню пункт Approve.
Можно выделить сразу несколько обновлений с помощью клавиш CTRL и SHIFT.
Выберите группу компьютеров WSUS, для которых нужно одобрить установку данного обновления (например, Test_Srv_WSUS). Выберите пункт Approve for Install. Можно одобрить обновление сразу для всех групп компьютеров, выбрав пункт All Computers, либо для каждой группы индивидуально. Например, сначала вы можете одобрить установку обновлений на группе тестовых компьютеров, а через 4-7 дней, если проблем не выявлено, одобрите установку обновления на все компьютеры.
Появится окошко с результатами процесса утверждения обновления. Если обновление успешно одобрено, появится надпись Success. Закройте это окно.
Ручной способ одобрения на WSUS довольно трудоемкий, т.к. каждое обновление нужно одобрять индивидуально. Если вы не хотите одобрять обновления вручную, вы можете создать правила автоматического одобрения обновлений (auto-approval).
Настройка правил автоматического утверждения обновлений WSUS
Автоматическое одобрение позволяет сразу, без вмешательства администратора, одобрить новые обновления, которые появились на сервере WSUS и назначить их для установки на клиентов. Автоматическое одобрение обновлений WSUS основано на правилах одобрения.
В консоли управления WSUS откройте раздел Options и выберите Automatic Approvals.
В появившемся окне на вкладке Update Rules указано только одно правило с именем Default Automatic Approval Rule (по умолчанию оно отключено).
Чтобы создать новое правило, нажмите на кнопку New Rule.
Правило состоит из 3 шагов. Вам нужно выбрать тип обновлений, выбрать на какие группы компьютеров WSUS нужно одобрить обновление и имя правила.
Щелкая на каждую синюю ссылку, откроется соответствующее окно свойств.
Например, вы можете включить автоматическое одобрение обновлении безопасности для тестовых серверов. Для этого в секции Choose Update Classifications выберите пункт Critical Updates, Security Updates, Definition Updates (остальные галки снимите). Затем в диалоге Approve the update for выберите группу WSUS с именем Test_Srv_WSUS.
В параметре Set a deadline for the approval, вы можете указать, когда данное обновление должно установиться на целевых компьютерах принудительно (независимо от настроек Windows Update). При этом компьютеры могут быть автоматически перезагружены не зависимо от того, включен ли параметр GPO ‘No auto-restart with logged on users for scheduled automatic updates installations’.
На вкладке Advanced вы можете выбрать, нужно ли автоматически одобрять обновления для самой службы WSUS и нужно ли дополнительно одобрять обновления, которые были изменены Microsoft. Обычно все галки на этой вкладке включены.
Теперь, когда в очередной второй вторник месяца ваш сервер WSUS закачает новые обновления (или при ручном импорте обновлений), они будут одобрены для автоматической установки на тестовой группе.
Клиенты Windows по умолчанию выполняют сканирование новых обновлений на сервере WSUS каждые 22 часа. Чтобы критичные компьютеры получали новые обновления как можно скорее, вы можете увеличить частоту таких синхронизаций с помощью политики Automatic Update detection frequency до нескольких часов (также вы можете выполнить сканирование обновлений вручную с помощью модуля PSWindowsUpdate). При большом количестве клиентов на сервере WSUS (более 2000 компьютеров), производительность сервера обновлений со стандартными настройками может оказаться недостаточной, поэтому ее необходимо оптимизировать (см. статью).
После того, как вы установили и протестировали обновления на тестовых группах и убедились, что пробам нет (обычно на тестирование достаточно 3-6 дней), вы можете одобрить новые обновления для установки на продуктивные системы.
Отзыв установленных обновлений на WSUS
Если одно из одобренных обновлений оказалось проблемным и вызывает ошибки на компьютерах или серверах, администратор WSUS может его отозвать. Для этого нужно найти обновление в консоли WSUS и выбрать Decline.
Теперь выберите группу WSUS, для которой нужно отменить установку и выбрать Approved for Removal. Через некоторое время обновление будет удалено на клиенте (подробнее процесс описан в статье Способы удаления обновлений Windows.
Одобрение обновлений WSUS с помощью PowerShell
Вы можете использовать PowerShell для управления одобрением обновлений WSUS. Для подключений к WSUS серверу из консоли PowerShell можно использовать такой код:
$WsusServerFqdn='msk-wsus.winitpro.loc'
[void][reflection.assembly]::LoadWithPartialName( «Microsoft.UpdateServices.Administration)
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer( $WsusServerFqdn, $False, '8530')
Теперь вы можете выполнять различные операции с вашим сервером WSUS. Например, чтобы запустить синхронизацию обновлений:
$wsus.GetSubscription().StartSynchronization();
Вывести список групп компьютеров на WSUS:
$wsus.GetComputerTargetGroups()
Выбрать конкретную группу компьютеров:
$group = $wsus.GetComputerTargetGroups() | ? {$_.Name -eq "Test_WKS_WSUS"}
Для получения списка последних обновлений можно использовать метод GetUpdates. Например, вы хотите выбрать последние обновления безопасности Windows и Office, которые были выпущены за указанный период:
$updates = $wsus.GetUpdates() | ? {($_.CreationDate -gt "5/1/2022" -and $_.CreationDate -lt "6/1/2022" -and $_.Title -notmatch ".net Framework" -and $_.PublicationState -ne "Expired" ) -and ($_.ProductFamilyTitles -eq "Windows" -or $_.ProductFamilyTitles -eq "Office") -and ($_.UpdateClassificationTitle -eq "Security Updates" -or $_.UpdateClassificationTitle -eq "Critical Updates")}
Теперь вы можете одобрить выбранные обновления для установки на указанную группу:
foreach ($update in $updates)
{
$update.Approve(“Install”,$group)
}
Также вы можете использовать модуль UpdateServices для управления WSUS.
В этом случае рассмотренные выше PowerShell команды для одобрения обновления можно заменить на:
$data = (Get-Date).adddays(-14)
$wsus= Get-WSUSServer -Name wsusservername -Port 8530
Get-WsusUpdate -UpdateServer $wsus -Approval Unapproved -Status Needed
Get-WsusUpdate -Classification All -Approval Unapproved | Where-Object { ($_.Update.CreationDate -lt $data) -and ($_.update.isdeclined -ne $true) and {$_.update.title -ilike "*Windows*" -or $_.update.title -ilike "*Office*"} | | Approve-WsusUpdate -Action Install -TargetGroupName "Test_WKS_WSUS"
Перенос одобренных обновлений между группами WSUS
К сожалению, в консоли WSUS нельзя скопировать все одобренные обновления из одной группы компьютеров WSUS в другую. Вы можете по одному искать новые обновления и вручную утверждать их для установки на продуктивные группы серверов и компьютеров.
Для себя я сделал небольшой PowerShell скрипт, который собирает список обновлений, одобренных для тестовой группы и автоматически одобряет все обнаруженные обновления на продуктивную группу (см. статью Копирование одобренных обновлений между группами WSUS). Теперь я запускаю этот скрипт через 7 дней после установки обновлений и тестирования обновлений на тестовых группах.
$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()
$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)
$Update.Approve('Install',$WsusTargetGroupObj) | Out-Null
}
}
Write-Output ("Approved {0} updates for target group {1}" -f $i, $WsusTargetGroup)
Этот PowerShell скрипт последовательно перебирает все одобренные обновления в исходной группе WSUS и, если обновление не одобрено на целевой группе, одобряет его установку. В данном примере скрипт пишет лог одобренных обновлений прямо в консоль PowerShell. Вы можете сохранять лог из скрипта PowerShell в текстовый файл.
Windows Server 2016
Одобрение и развертывание обновлений WSUS в Windows Server