Перенесення схвалених оновлень між групами WSUS

У тому випадку, якщо ви встановлюєте оновлення 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 за допомогою PowerShell

Спосіб перенесення схвалених оновлень в консолі 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)
$ Update.Approve ( 'Install', $ WsusTargetGroupObj) | Out-Null


Write-Output ( «Approved 0 updates for target group 1» -f $ i, $ WsusTargetGroup)

Даний PowerShell скрипт послідовно перебирає всі схвалені поновлення у вихідній групі WSUS і, якщо відновлення не схвалено на цільовій групі, схвалює його установку. В даному прикладі скрипт схвалив 64 оновлення, які були схвалені в тестовій групі і були відсутні у продуктивній.