Для управління оновленнями 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 і вище).
- Скачайте останню версію модуля PSWindowsUpdate зі сторінки: https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc, щоб розблокувати скачаний файл; Зверніть увагу, що в галереї скриптів TechNet доступна тільки стара версія модуля - v 1.5.6. У той час як менеджер пакетів NuGet устаналівает з PowershellGallery версію PSWindowsUpdate 2.1.1.2. У різних версіях модуля доступні командлети і параметри можуть відрізнятися.
- Розпакуйте архів з модулем в один з каталогів
% USERPROFILE% \ Documents \ WindowsPowerShell \ Modules
або% WINDIR% \ System32 \ WindowsPowerShell \ v1.0 \ Modules
(При постійному використанні модуля це кращий варіант); - Дозвольте виконання скриптів:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force
- Тепер ви можете імпортувати модуль в свою сесію 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.