Блог

Для управления обновлениями Windows можно использовать PowerShell модуль PSWindowsUpdate. Этот модуль доступен для загрузки из PowerShell Gallery и позволяет администраторам сканировать, скачивать, устанавливать, удалять или скрывать обновления на локальных или удаленных рабочих станциях и серверах Windows.

Приобрести оригинальные ключи активации Windows всегда можно у нас в каталоге от 1099 ₽

1. Установка модуля PSWindowsUpdate

В современных версиях Windows 10/11 и Windows Server 2022/2019/2016 модуль PSWindowsUpdate можно установить из онлайн репозитория PowerShell Gallery с помощью команды:

Install-Module -Name PSWindowsUpdate

Подтвердите добавление репозитория, нажав Y. Чтобы убедиться, что модуль установлен:

Get-Package -Name PSWindowsUpdate

Также PSWindowsUpdate можно установить в офлайн-режиме. В изолированной среде для установки потребуется предварительное обновление PowerShell.

Вы можете также установить модуль удалённо на другие компьютеры:

$Targets = "srv1.winitpro.loc", "srv2.winitpro.loc"

Update-WUModule -ComputerName $Targets -local

Политика выполнения PowerShell скриптов в Windows по умолчанию блокирует запуск командлетов из сторонних модулей. Чтобы разрешить выполнение скриптов, выполните:

Set-ExecutionPolicy –ExecutionPolicy RemoteSigned -force

После этого импортируйте модуль в сессию PowerShell:

Import-Module PSWindowsUpdate

Проверьте список команд, доступных в модуле:

Get-command -module PSWindowsUpdate

Для проверки текущих настроек Windows Update на вашем компьютере выполните команду:

Get-WUSettings

Пример вывода:


ComputerName : WKS22122
WUServer : http://MS-WSUS:8530
WUStatusServer : http://MS-WSUS:8530
AcceptTrustedPublisherCerts : 1
ElevateNonAdmins : 1
DoNotConnectToWindowsUpdateInternetLocations : 1
TargetGroupEnabled : 1
TargetGroup : WorkstationsProd
NoAutoUpdate : 0
AUOptions : 3 - Notify before installation
ScheduledInstallDay : 0 - Every Day
ScheduledInstallTime : 3
UseWUServer : 1
AutoInstallMinorUpdates : 0
AlwaysAutoRebootAtScheduledTime : 0
DetectionFrequencyEnabled : 1
DetectionFrequency : 4

В этом примере клиент Windows Update настроен с помощью GPO на получение обновлений с локального сервера WSUS.

2. Сканировать и загрузить обновления с помощью PowerShell

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

Get-WindowsUpdate

Также можно использовать команду:

Get-WUList

Команда должна вывести список обновлений, которые нужно установить на вашем компьютере.

Команда Get-WindowsUpdate при первом запуске может вернуть ошибку:

Value does not fall within the expected range.

Для исправления ошибки нужно сбросить настройки агента Windows Update, перерегистрировать библиотеки и восстановить исходное состояние службы wususerv с помощью команды:

Reset-WUComponents -Verbose

Чтобы проверить источники обновлений (например, серверы Microsoft или локальный WSUS):

Get-WUServiceManager

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

Если хотите сканировать обновления с серверов Microsoft Update (включая обновления для 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

Чтобы убрать определенные продукты или конкретные KB из списка обновлений, которые получает ваш компьютер, вы их можете исключить по:

— Категории (-NotCategory);

— Названию (-NotTitle);

— Номеру обновления (-NotKBArticleID).

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

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

Скачать все доступные обновления на компьютер (обновления загружаются в локальный кэш обновлений в каталоге C:\Windows\SoftwareDistribution\Download):

Get-WindowsUpdate -Download -AcceptAll

Windows загрузит все доступные патчи сервера обновлений (MSU и CAB файлы) в локальный каталог обновлений, но не запустит их автоматическую установку.

3. Установка обновлений Windows с помощью команды Install-WindowsUpdate

Чтобы автоматически скачать и установить все доступные обновления для вашей версии Windows с серверов Windows Update (вместо локального WSUS), выполните:

Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot

Ключ AcceptAll включает одобрение установки для всех пакетов, а AutoReboot разрешает автоматическую перезагрузку Windows после завершения установки обновлений.

Дополнительно можно использовать следующие параметры:

IgnoreReboot — запретить автоматическую перезагрузку.

ScheduleReboot — задать точное время перезагрузки компьютера.

Пример команды для сохранения истории установки обновлений в лог-файл:

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

Если вам нужно установить только конкретные обновления по номерам KB, используйте:

Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install

Если вы хотите исключить определённые обновления, например драйверы или пакеты OneDrive, выполните следующую команду:

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

Чтобы проверить, требуется ли перезагрузка компьютера после установки обновлений, выполните команду:

Get-WURebootStatus

4. Просмотр истории установленных обновлений в Windows

Для просмотра списка всех установленных обновлений, используйте следующую команду:

Get-WUHistory

Чтобы найти информацию о конкретном обновлении по его номеру KB, выполните:

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

Для вывода дат последнего успешного сканирования и установки обновлений на компьютере:

Get-WULastResults | Select-Object LastSearchSuccessDate, LastInstallationSuccessDate

5. Удаление обновлений в Windows с помощью PowerShell

Для удаления конкретного обновления, используя его номер KB, выполните:

Remove-WindowsUpdate -KBArticleID KB4011634

6. Скрыть ненужные обновления Windows с помощью PowerShell

Вы можете скрыть определённые обновления, чтобы они не отображались в списке доступных для установки. Например, для скрытия обновлений с номерами KB2538243 и KB4524570 выполните:

$HideList = "KB2538243", "KB4524570"

Get-WindowsUpdate -KBArticleID $HideList -Hide

Или используйте сокращённую команду alias:

Hide-WindowsUpdate -KBArticleID $HideList -Verbose

Чтобы отменить скрытие обновлений:

Show-WindowsUpdate -KBArticleID $HideList

Для просмотра списка всех скрытых обновлений выполните команду:

Get-WindowsUpdate –IsHidden

7. Управление обновлениями Windows на удалённых компьютерах через PowerShell

Все командлеты модуля PSWindowsUpdate можно использовать для управления обновлениями на удалённых компьютерах, используя параметр -Computername Host1, Host2, Host3. На удалённых компьютерах должен быть включён и настроен WinRM (это можно сделать вручную или через GPO). Модуль PSWindowsUpdate работает как в доменных сетях, так и в рабочей группе.

Для добавления имён компьютеров в список доверенных хостов WinRM, выполните следующую команду:

winrm set winrm/config/client ‘@{TrustedHosts="HOST1,HOST2,…"}’

Или используйте PowerShell для настройки:

Set-Item wsman:\localhost\client\TrustedHosts -Value "HOST1,HOST2" -Force

Чтобы развернуть модуль PSWindowsUpdate на удалённых компьютерах и настроить необходимые порты, выполните следующие команды:

Invoke-Command -ComputerName $computer -ScriptBlock {Set-ExecutionPolicy RemoteSigned -force }

Invoke-Command -ComputerName $computer -ScriptBlock {Import-Module PSWindowsUpdate; Enable-WURemoting}

Для проверки доступных обновлений на удалённых компьютерах используйте:

Get-WUList –ComputerName server2

Для установки всех доступных обновлений на нескольких серверах:

$ServerNames = "server1, server2, server3"

Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\Windows\PSWindowsUpdate.log} -RunNow -Confirm:$false -Verbose -ErrorAction Ignore

Вы можете так же указать точное время для запуска задания по установке обновлений:

Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate –AcceptAll -AutoReboot | Out-File C:\Windows\PSWindowsUpdate.log } -Confirm:$false -TriggerDate (Get-Date -Hour 20 -Minute 0 -Second 0)

Для проверки статуса задания на удалённых компьютерах выполните:

Get-WUJob -ComputerName $ServerNames

Если команда вернет пустой список, значит задача установки на всех компьютерах выполнена.

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

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

Получить дату последней установки обновлений на всех компьютерах в домене можно с помощью командлета Get-ADComputer из модуля AD PowerShell:

$Computers=Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows*' }
Foreach ($Computer in $Computers)
{
Get-WULastResults -ComputerName $Computer.Name|select ComputerName, LastSearchSuccessDate, LastInstallationSuccessDate
}

Модуль PowerShell PSWindowsUpdate является удобным инструментом для загрузки и установки обновлений Windows через командную строку. Это особенно важно для серверов, которые работают без графического интерфейса, таких как Windows Server Core и Hyper-V Server. Кроме того, данный модуль незаменим в ситуациях, когда необходимо одновременно инициировать и контролировать процесс установки обновлений на множестве серверов или рабочих станций Windows.

banner for Windows Server
Купить ключ активации Windows Server от
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии