Модуль PSWindowsUpdate управління оновленнями Windows з PowerShell

Для управління оновленнями Windows з командного рядка дуже зручно використовувати спеціальний PowerShell модуль - PSWindowsUpdate. Модуль PSWindowsUpdate не вбудований в Windows і є стороннім модулем, доступним в галереї скриптів Technet. PSWindowsUpdate дозволяє адміністраторам віддалено перевіряти, встановлювати, видаляти і приховувати певні поновлення на комп'ютерах і робочих станціях. Модуль PSWindowsUpdate особливо цінний при використанні для управління оновленнями в Core редакціях Windows Server, в яких відсутні графічний інтерфейс, а також під час налаштування способу Windows в режимі аудиту.

зміст:

  • Установка модуля управління оновленнями PSWindowsUpdate
  • Огляд команд модуля PSWindowsUpdate
  • Управління оновленнями Windows на видалених комп'ютерах через PowerShell
  • Отримуємо список доступних оновлень Windows з PowerShell
  • Install-WindowsUpdate: установка оновлень за допомогою PSWindowsUpdate
  • Get-WUHistory: перегляд історії встановлених оновлень Windows
  • Remove-WindowsUpdate: Видалення оновлень
  • Hide-WindowsUpdate: як приховати непотрібні оновлення за допомогою PowerShell

Установка модуля управління оновленнями PSWindowsUpdate

Якщо ви використовуєте Windows 10, ви можете встановити модуль PSWindowsUpdate з онлайн сховища через менеджер пакетів PackageManagement всього однією командою:

Install-Module -Name PSWindowsUpdate

У моєму випадку з'явилося попередження, що версія PSWindowsUpdate 1.5.2.6 вже встановлена. Щоб встановити новішу версію, потрібно запустити команду:

Install-Module -Name PSWindowsUpdate -Force

Після закінчення установки потрібно перевірити наявність пакета:

Get-Package -Name PSWindowsUpdate

Якщо у вас встановлена ​​більш стара версія Windows (Windows 7 / 8.1 / Windows Server 2008 R2 / 2012 R2) або відсутній прямий доступ в Інтернет, ви можете встановити модуль PSWindowsUpdate вручну.

Модуль PSWindowsUpdate можна встановити на будь-які підтримувані версії Windows, починаючи з Vista / Windows Server 2008 з встановленим PowerShell 2.0 (але рекомендується PoSh 3.0 і вище).

  1. Скачайте останню версію модуля PSWindowsUpdate зі сторінки: https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc, щоб розблокувати скачаний файл; Зверніть увагу, що в галереї скриптів TechNet доступна тільки стара версія модуля - v 1.5.6. У той час як менеджер пакетів NuGet устаналівает з PowershellGallery версію PSWindowsUpdate 2.1.1.2. У різних версіях модуля доступні командлети і параметри можуть відрізнятися.
  2. Розпакуйте архів з модулем в один з каталогів % USERPROFILE% \ Documents \ WindowsPowerShell \ Modules або % WINDIR% \ System32 \ WindowsPowerShell \ v1.0 \ Modules (При постійному використанні модуля це кращий варіант);
  3. Дозвольте виконання скриптів: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force
  4. Тепер ви можете імпортувати модуль в свою сесію PowerShell: Import-Module PSWindowsUpdate Примітка. У Windows 7 / Server 2008 R2 при імпорті модуля PSWindowsUpdate ви можете зіткнуться з помилкою виду: Ім'я "Unblock-File» не розпізнано як ім'я командлета. Справа в тому, що в модулі використовуються деякі функції, які з'явилися тільки в PowerShell 3.0. Для використання цих функцій вам доведеться оновити PowerShell, або вручну видалити рядок | Unblock-File з файлу PSWindowsUpdate.psm1.

Після установки модуля PSWindowsUpdate на своєму комп'ютері ви можете віддалено встановити його на інші комп'ютери або сервера за допомогою командлета Update-WUModule. Наприклад, щоб скопіювати PSWindowsUpdate модуль з вашого комп'ютера на два віддалених сервера, виконайте команди (потрібен доступ до віддалених серверів по протоколу SMB, порт TCP 445):

$ Targets = "Server1", "Server2"
Update-WUModule -ComputerName $ Targets -Local

Щоб зберегти модуль в мережевий каталог для подальшого імпорту модуля на інших комп'ютерах, виконайте:

Save-Module -Name PSWindowsUpdate -Path \\ fs01 \ ps \

Огляд команд модуля PSWindowsUpdate

Список доступних командлетів модуля можна вивести так:

get-command -module PSWindowsUpdate

Коротенько опишемо призначення команд модуля:

  • Clear-WUJob - використовувати Get-WUJob для виклику завдання WUJob за розкладом;
  • Download-WindowsUpdate (Алиас для Get-WindowsUpdate -Download) - отримати список оновлень і завантажити їх;
  • Get-WUInstall, Install-WindowsUpdate (Алиас для Get-WindowsUpdate -Install) - встановити обвновленія;
  • Hide-WindowsUpdate (Алиас для Get-WindowsUpdate -Hide: $ false) - приховати оновлення;
  • Uninstall-WindowsUpdate -удалить оновлення за допомогою Use Remove-WindowsUpdate;
  • Add-WUServiceManager - реєстрація сервера оновлення (Windows Update Service Manager) на комп'ютері;
  • Enable-WURemoting - включити правила брандмауера, що дозволяють віддалене використання командлет PSWindowsUpdate;
  • Get-WindowsUpdate (Get-WUList) - виводить список оновлень, відповідним зазначеним критеріям, дозволяє знайти і встановити потрібний оновлення. Це основний командлет модуля PSWindowsUpdate. Дозволяє завантажити і встановити оновлення з сервера WSUS або Microsoft Update. Дозволяє вибрати категорії оновлень, конкретні оновлення та вказати правила перезавантаження комп'ютера при установці оновлень;
  • Get-WUApiVersion - отримати версію агента Windows Update Agent на комп'ютері;
  • Get-WUHistory - вивести список встановлених оновлень (історія оновлень);
  • Get-WUInstallerStatus - перевірка стану служби Windows Installer;
  • Get-WUJob - запуску завдань оновлення WUJob в Task Scheduler;
  • Get-WULastResults - дати останнього пошуку і установки оновлень (LastSearchSuccessDate і LastInstallationSuccessDate);
  • Get-WURebootStatus - дозволяє перевірити, чи потрібна перезавантаження для застосування конкретного поновлення;
  • Get-WUServiceManager - висновок джерел оновлень;
  • Get-WUSettings - отримати настройки клієнта Windows Update;
  • Invoke-WUJob - віддалене виклик завдань WUJobs в Task Schduler для негайного виконання завдань PSWindowsUpdate.
  • Remove-WindowsUpdate - видалити оновлення;
  • Remove-WUServiceManager - відключити Windows Update Service Manager;
  • Set-PSWUSettings - зберегти настройки модуля PSWindowsUpdate в XML файл;
  • Set-WUSettings - настройка параметрів клієнта Windows Update;
  • Update-WUModule - оновити модуль PSWindowsUpdate (можна оновити модуль на віддаленому комп'ютері, скопіювавши його з поточного, або оновити з PSGallery).

Управління оновленнями Windows на видалених комп'ютерах через PowerShell

Практично всі командлети модуля PSWindowsUpdate дозволяють управляти установкою оновлень на віддалених комп'ютерах. Для цього використовується атрибут -Computername Host1, Host2, Host3.

Щоб керувати оновленнями на віддалених комп'ютерах, потрібно додати їх імена в список довірених хостів winrm:

winrm set winrm / config / client '@ TrustedHosts = "HOST1, HOST2, ..."'

Встановіть модуль PSWindowsUpdate на віддалених комп'ютерах і дозвольте в файервол доступ по динамічним RPC портів до процесу dllhost.exe.

Отримуємо список доступних оновлень Windows з PowerShell

Вивести список оновлень, доступних для даного комп'ютера на сервері оновлень можна за допомогою команд Get-WindowsUpdate або Get-WUList.

Щоб перевірити список доступних оновлень на віддаленому комп'ютері, виконайте:

Get-WUList -ComputerName server2

Ви можете перевірити, звідки повинна отримувати оновлення ваша ОС Windows. Виконайте команду:

Get-WUServiceManager

ServiceID IsManaged IsDefault Name --------- --------- --------- ---- 8b24b027-1dee-babb-9a95-3517dfb9c552 False False DCat Flighting Prod 855e8a7c -ecb4-4ca3-b045-1dfa50104289 False False Windows Store (DCat Prod) 3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server Update Service 9482f4b4-e343-43b6-b170-9a65bc822c77 False False Windows Update

Як ви бачите, комп'ютер налаштований на отримання оновлень на локальному сервері WSUS (Windows Server Update Service = True). В цьому випадку ви повинні увідесть список оновлень, схвалених для вашого комп'ютера на WSUS.

Якщо ви хочете просканувати ваш комп'ютер на серверах Microsoft Update (крім оновлень Windows на цих серверах містяться поновлення Office та інших продуктів) в Інтернеті, виконайте команду:

Get-WUlist -MicrosoftUpdate

Ви отримуєте попередження:

Get-WUlist: Service Windows Update was not found on computer

Щоб дозволити сканування на Microsoft Update, виконайте команду:

Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7

Тепер можете виконати сканування на Microsoft Update. Як ви бачите, в даному випадку були знайдені додаткові оновлення для Microsoft Visual C ++ 2008 і Microsoft Silverlight.

Щоб перевірити версію агента Windows Update на комп'ютері, виконайте команду:

Get-WUApiVersion

ComputerName PSWindowsUpdate PSWUModuleDll ApiVersion WuapiDllVersion ------------ --------------- ------------- ----- ----- --------------- FS01 2.1.1.2 2.0.6995.28496 8.0 10.0.14393.2879

Щоб прибрати певні продукти або конкретні пакети зі списку оновлень, які отримує ваш комп'ютер, ви їх можете виключити з:

  • Категорії (-NotCategory);
  • Назвою (-NotTitle);
  • Номером поновлення (-NotKBArticleID).

Наприклад, виключимо зі списку оновлення драйверів, OneDrive і одну конкретну KB:

Get-WUlist -NotCategory "Drivers" -NotTitle OneDrive -NotKBArticleID KB4533002

Install-WindowsUpdate: установка оновлень за допомогою PSWindowsUpdate

Щоб автоматично завантажити та встановити всі доступні оновлення для вашої Windows, виконайте:

Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot

Ключ AcceptAll включає схвалення установки для всіх пакетів, а AutoReboot дозволяє автоматичну перезавантаження Windows після установки оновлень.

Можете зберегти історію встанови оновлень в лог файл (можна використовувати замість WindowsUpdate.log).

Install-WindowsUpdate -AcceptAll -Install -AutoReboot | Out-File "c: \ $ (get-date -f yyyy-MM-dd) -WindowsUpdate.log" -force

Можна встановити тільки конкретні поновлення за номерами KB:

Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install

В даному випадку потрібно підтверджувати установку кожного оновлення вручну.

Якщо ви хочете виключити деякі оновлення зі списку на установку, виконайте:

Install-WindowsUpdate -NotCategory "Drivers" -NotTitle OneDrive -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot

Модуль дозволяє віддалено запустити установку оновлень відразу на декількох комп'ютерах або серверах (на комп'ютерах має бути присутнім модуль PSWindowsUpdate). Це особливо зручно, так як дозволяє адміністратору не заходить вручну на все сервера під час планової установки оновлень. Наступна команда встановить всі доступні оновлення на трьох віддалених серверах:

Invoke-WUInstall -ComputerName server1, server2, server3 -Script ipmo PSWindowsUpdate; Get-WindowsUpdate -Install -AcceptAll -AutoReboot | Out-File C: \ Windows \ PSWindowsUpdate.log -Confirm: $ false -Verbose -SkipModuleTest -RunNow

У модулі PSWindowsUpdate 2.1 замість командлет Invoke-WUInstall потрібно використовувати Invoke-WUJob. Цей командлет створює на віддаленому комп'ютері завдання планувальника, що запускається від SYSTEM.

Тому в нових версіях модуля для віддаленої установки оновлень використовуйте таку команду:

$ ServerNames = "server1, server2, server3"
Invoke-WUJob -ComputerName $ ServerNames -Script ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C: \ Windows \ PSWindowsUpdate.log -RunNow -Confirm: $ false

Можна встановити оновлення на віддаленому комп'ютері і відправити email звіт адміністратору:

Install-WindowsUpdate -ComputerName server1 -MicrosoftUpdate -AcceptAll - IgnoreReboot -SendReport -PSWUSettings @ SmtpServer = "smtp.winitpro.ru"; From = "[email protected]"; To = "[email protected]"; Port = 25 -Verbose

Get-WUHistory: перегляд історії встановлених оновлень Windows

За допомогою команди Get-WUHistory ви можете отримати список оновлень, встановлених на комп'ютері раніше автоматично або вручну.

Можна отримати інформацію про дату установки конкретного поновлення:

Get-WUHistory | Where-Object $ _. Title -match "KB4517389" | Select-Object * | ft

Щоб отримати інформацію про наявність встановленого поновлення на декількох віддалених комп'ютерах, можна скористатися таким кодом:

"Server1", "server2" | Get-WUHistory | Where-Object $ _. Title -match "KB4011634" | Select-Object * | ft

Remove-WindowsUpdate: Видалення оновлень

Для коректного видалення оновлень використовується командлет Remove-WindowsUpdate. Вам достатньо вказати номер KB як аргумент параметра KBArticleID. Щоб відкласти автоматичне перезавантаження комп'ютера можна додати ключ -NoRestart:

Remove-WindowsUpdate -KBArticleID KB4011634 -NoRestart

Hide-WindowsUpdate: як приховати непотрібні оновлення за допомогою PowerShell

Ви можете приховати певні оновлення, щоб вони ніколи не встановлювалися службою оновлень Windows Update на вашому комп'ютер (найчастіше приховують оновлення драйверів). Наприклад, щоб приховати оновлення KB2538243 і KB4524570, виконайте такі команди:

$ HideList = "KB2538243", "KB4524570"
Get-WindowsUpdate -KBArticleID $ HideList -Hide

або використовуйте alias:

Hide-WindowsUpdate -KBArticleID $ HideList -Verbose

Тепер при наступному скануванні оновлень за допомогою команди Get-WUlist приховані оновлення не будуть відображатися в списку доступних для установки патчів.

Вивести список оновлень, які приховані на даному комп'ютері можна так:

Get-WindowsUpdate -IsHidden

Зверніть увагу, що в колонці Status у прихованих оновлень з'явився атрибут H (Hidden).

Скасувати приховування деяких оновлень можна так:

Get-WindowsUpdate -KBArticleID $ HideList -WithHidden -Hide: $ false

або так:

Show-WindowsUpdate -KBArticleID $ HideList

Для тих, хто себе некомфортно почувається в консолі PowerShell, для управління оновленнями Windows 10 можу порекомендувати графічну утиліту Windows Update MiniTool.