Одна из основных задач администратора 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.
Выберите группу компьютеров 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 в текстовый файл.
«…более 2000 тысяч компьютеров…» Мне кажется, что при 2 миллионах компьютеров оптимизация Вас не спасёт. Вероятно, всё же придётся начальству второй сервер купить. 😀
Да, чего то я с 2 млн клиентов WSUS загнул 🙂
ИМХО , судя по количеству проблем, с обновлениями после установки , решил не ставить их. Слишком много проблем , времени и так не хватает , поэтому проще их не ставить, чем потом разбираться почему тот или другой сервис не работает.
Это тоже не правильно. Апдейты ставить надо, уззвимостей в Windows очень много и риск поймать вирус, тройна, шифровальщика без обновлений гораздо выше. Антивирус не всегда спасет от удаленной эусплуатации. Вот только спешка с установкой новых обновлений на продуктив тоже нежалательна.
Добрый день. Можете пояснить:
при добавление правила на автоматическое подтверждение есть строчка «Установить крайний срок для утверждения». Что это значит? И что произойдет через 7 дней?
Добрый день.
У меня английская редакция :). «Set a deadline for the approval» — крайний срок, после которого обновление установится автоматически, а компьютеры перезагружены (если потребуется). Т.е. через 7 дней обновления будут ставится на клиентах выбранной группы принудительно, независимо от настроек политик обновления. Насколько я помню, некоторые параметры политики WSUS при наступлении крайнего срока переопределяются, например разрешается перезагрузка даже при активном пользователе.
Есть WSUS. На нем одобрены для установки обновления для одной группы (OU1), а для другой (OU2) эти же обновления одобрены для удаления или не одобрены вообще. В первой группе (OU1) все поставилось и в списке компов нет ни одного восклицательного знака. Во второй же группе (OU2) восклицательные знаки ВСЕГДА присутствуют. При просмотре необходимых обновлений там список из тех самых не одобренных обновлений. Как от них избавиться?
Т.е. по факту компьютеры из OU2 все-таки требуют установки обновлений, которые вы отклонили? Или вы отклоняли обновления после их апрува на группу?
По факту компы не требуют обновлений, но сервер упорно показывает необходимость установки на клиентах.
И да. Я сначала принял обновления, затем создал новую группу. Переместил туда компы и там отменил обновы.
Получается — надо подождать какое-то время?
Или снести компы вообще с сервера и заново дать им «постучаться» к нему?
В общем. Снес компы. Провел очистку WSUS. Утром включили компы. Они опять зарегистрировались и … ничего не изменилось.
У всех трех компов по прежнему WSUS говорит о наличии обновлений. В списке у всех обновлений указано : Не утверждено.
В Windowsupdate.log указано:
2019-09-04 10:06:24:299 1316 dc8 PT + ServiceId = {3DA21691-E39D-4DA6-8A4B-B43877BCB1B7}, Server URL = _http://servwsus/ClientWebService/client.asmx
2019-09-04 10:07:02:377 1316 dc8 Agent * Found 0 updates and 75 categories in search; evaluated appl. rules of 3001 out of 5711 deployed entities
А сервер говорит, что этот комп нуждается в одном обновлении.
На других ситуация такая же в логах, но на сервере указано 17 и 4 обновления.
Вся проблема в том, что WSUS и клиенты уже отчитались на сервере о необходимости установки этих обновлений. Насколько я помню, без сброса конфигурации WSUS (ака переустановка), вы эту статистику не поправите.
Боролся с этим просто. Ставил на группу разрешение на удаление, потом контролировал исполнение. После этого отклонял ненужное обновление — все знаки пропадали, но если тебе всё же надо у конкретной группы убрать, а у другой раздачу оставить — то такой способ не твой. Можешь попробовать отработать по моему сценарию, а после заапрувить обновление на OU1, а у OU2 пусть стоит «не утверждено».
подскажите раньше же еще надо было распространять сертификат WSUS на все машины в домене куда будут ставится обновления? Сейчас не актуально?
Не понял, о чем речь… Если вы имеете в виду сертфикат, который используется для реализации SSL на WSUS — да клиенты должны ему доверять (если вы используете самоподписанный сертификат).
Хотя на практике для WSUS редко используются SSL сертфикаты. Если все же решитесь, можно добавить сертфикат в доверенные на компьютерах через GPO: https://winitpro.ru/index.php/2015/11/02/ustanovka-sertifikata-na-kompyutery-domena-s-pomoshhyu-gruppovyx-politik/
спасибо, я похоже перепутал )
сертификаты нужны были не wsus, а LUP и WSUSPP.
Добрый день! Спасибо за статью. Есть ВСУС, настроена автоматическое утверждение обновлений, и установка по расписанию. Перезагрузка настроена если пользователь вышел из системы. С некоторых пор сломалась установка на 8.1. Автоматически обновы не ставятся. Если пользователь является локальным админом на компе, и нажать кнопку Установить обновления, просит имя и пароль, и не принимает их. Если пользователь не админ — то так же просит имя и пароль, но принимает или сразу или при второй попытке. Затык начался с обновления служебного стека. Куда смотреть, что делать? Заранее благодарен.
Вот эта политика включена?
Computer Configuration -> Administrative Templates -> Windows Component -> Windows Update
«Allow non administrative to receive update notifications» = Enabled
вопрос: как сочетаются правила на первом шаге автоматического утверждения? если я выберу «when an update is in a specific classifikation» и «when an update is in a specific product» в классах выберу критические обновы, а в продуктах win7. Одобрятся все критические обновы для win7, либо (не дай бог) все критические обновы для всех продуктов и все классы обнов для win7
Должны выполнится оба условия, тогда обновления будут одобрены.
Добрый день.
Объясните, пжлст, как настраивать «цепочку обновления» или как подобрать в какой последовательности ставить обновления к примеру на чистую развернутую систему (или при деполое через WDS LTI). Просто если обновлять через Интернет, то оно сначала одни обновления ставятся, потом после перезагрузки другие. а если на (к примеру) Server 2019 сразу накатить через WSUS последний кумулятивный, то он не ставится, но если последовательно утверждать во WSUS, и после каждого перезагружаться, то норм.
Вам нужно вручную или автоматически каждый месяц апрувить новые обновления на wsus, чтобы они были доступными для клиентов. Клиент сам разберется, какие обновления ему ставить.
но ведь не будешь же апрувить всё. + многие установленные копмпоненты потом отменяют.
к тому же при Деплое через LTI рили не оч понятно что ставить.
Как вообще понять какие обновления одобрять а какие нет?
Сделал синхронизацию обновлений ветки продуктов Windows 10, version 1903 and later.
На утверждение приехало 755 обновлений и во многих написано «Это обновление заменяется другим…»
Такое обновление имеет смысл утверждать или нужно искать то которым оно заменяется?
Как бороться вот с этим?
Исключение при вызове «GetUpdates» с «0» аргументами: «Время ожидания операции истекло»
C:\Users\Documents\wsus.ps1:8 знак:1
+ $Updates = $wsus.GetUpdates()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
Approved 0 updates for target group ProdPC
Добрый день!
Подскажите пожалуйста, а как исключить апдейты которые помечены на удаление? Я не совсем понимаю как это можно сделать.