Одобрение и развертывание обновлений WSUS в Windows Server

Одобрение и развертывание обновлений 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 вручную либо вы можете привязать компьютеры и сервера к группам WSUS с помощью групповой политики Enable client-side targeting (Разрешить клиенту присоединение к целевой группе).

После того, как группы WSUS созданы, вы можете одобрить для них обновления. Есть два способа утверждения обновлений для установки на компьютерах: ручное и автоматическое обновление.

Ручное одобрение и установка обновлений через WSUS

Откройте консоль управления WSUS (Update Services) и выберите секцию Updates. В ней отображается список доступных обновлений. В этом разделе есть 4 подраздела: All Updates, Critical Updates, Security Updates и WSUS Updates. Найдите обновление, которые вы хотите распространить на компьютеры. Можно воспользоваться поиском в консоли WSUS по номеру KB, или отсортировать обновления по дате выпуска.

поиск обновления на wsus сервере

В консоли WSUS можно применять различные фильтры. Выведите список еще не утвержденных обновлений (фильтр — Approval=Unapproved, Status=Any). Найдите нужное обновление, щелкните по нему ПКМ и выберите в меню пункт Approve.

Можно выделить сразу несколько обновлений с помощью клавиш CTRL и SHIFT.

одобрения обнволения wsus к установке

Выберите группу компьютеров WSUS, для которых нужно одобрить установку данного обновления (например, Test_Srv_WSUS). Выберите пункт Approve for Install. Можно одобрить обновление сразу для всех групп компьютеров, выбрав пункт All Computers, либо для каждой группы индивидуально. Например, сначала вы можете одобрить установку обновлений на группе тестовых компьютеров, а через 4-7 дней, если проблем не выявлено, одобрите установку обновления на все компьютеры.

Approve for Install - одобрить обновление wsus для группы

Появится окошко с результатами процесса утверждения обновления. Если обновление успешно одобрено, появится надпись Success. Закройте это окно.

approving security update

Ручной способ одобрения на WSUS довольно трудоемкий, т.к. каждое обновление нужно одобрять индивидуально. Если вы не хотите одобрять обновления вручную, вы можете создать правила автоматического одобрения обновлений (auto-approval).

Настройка правил автоматического утверждения обновлений WSUS

Автоматическое одобрение позволяет сразу, без вмешательства администратора, одобрить новые обновления, которые появились на сервере WSUS и назначить их для установки на клиентов. Автоматическое одобрение обновлений WSUS основано на правилах одобрения.

В консоли управления WSUS откройте раздел Options и выберите Automatic Approvals.

В появившемся окне на вкладке Update Rules указано только одно правило с именем Default Automatic Approval Rule (по умолчанию оно отключено).

Чтобы создать новое правило, нажмите на кнопку New Rule.

правила автоматического одобрения обновлений wsus

Правило состоит из 3 шагов. Вам нужно выбрать тип обновлений, выбрать на какие группы компьютеров WSUS нужно одобрить обновление и имя правила.

автоматическое одобрение обновлений на тестовых компьютерах

Щелкая на каждую синюю ссылку, откроется соответствующее окно свойств.

одобрение обновлений безопасности Critical Updates, Security Updates, Definition Updates

Например, вы можете включить автоматическое одобрение обновлении безопасности для тестовых серверов. Для этого в секции 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

Теперь, когда в очередной второй вторник месяца ваш сервер WSUS закачает новые обновления (или при ручном импорте обновлений), они будут одобрены для автоматической установки на тестовой группе.

Клиенты Windows по умолчанию выполняют сканирование новых обновлений на сервере WSUS каждые 22 часа. Чтобы критичные компьютеры получали новые обновления как можно скорее, вы можете увеличить частоту таких синхронизаций с помощью политики Automatic Update detection frequency до нескольких часов (также вы можете выполнить сканирование обновлений вручную с помощью модуля PSWindowsUpdate). При большом количестве клиентов на сервере WSUS (более 2000 компьютеров), производительность сервера обновлений со стандартными настройками может оказаться недостаточной, поэтому ее необходимо оптимизировать (см. статью).

После того, как вы установили и протестировали обновления на тестовых группах и убедились, что пробам нет (обычно на тестирование достаточно 3-6 дней), вы можете одобрить новые обновления для установки на продуктивные системы.

Отзыв установленных обновлений на WSUS

Если одно из одобренных обновлений оказалось проблемным и вызывает ошибки на компьютерах или серверах, администратор WSUS может его отозвать. Для этого нужно найти обновление в консоли WSUS и выбрать Decline.

Decline - отзыв обновления wsus

Теперь выберите группу 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)
}


powershell скрипт для одобрения обновлений на wsus

Также вы можете использовать модуль UpdateServices для управления WSUS.

powershell модуль wsus UpdateServices

В этом случае рассмотренные выше 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 скрипт последовательно перебирает все одобренные обновления в исходной группе WSUS и, если обновление не одобрено на целевой группе, одобряет его установку. В данном примере скрипт пишет лог одобренных обновлений прямо в консоль PowerShell. Вы можете сохранять лог из скрипта PowerShell в текстовый файл.

Windows Server 2016
Одобрение и развертывание обновлений WSUS в Windows Server