Для управления обновлениями 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 (но рекомендуется PowerShell версии 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
(при постоянном использовании модуля это лучший вариант); - Разрешите выполнение PS1 скриптов:
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="wualert@winitpro.ru";To="wuadmin@winitpro.ru";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.
В чём смысл ковыряния в командной строке с обновлениями, когда есть удобный интерфейс mmc? Сомневаюсь, что админ на свою машину не поставил набор инструментов для администрирования ActiveDirectory.
Админу как раз удобнее выполнять все действия по обновлению через командную строку. В какой это консоли MMC вы сможете так гибко управлять установкой обнволений на клиентах?
А возможность удаленной установки обновлений сразу на многих серверах просто чудесный инструмент. Я уже второй год пользуюсь этим модулем, очень удобно.
Не понял при чем тут «набор инструментов для администрирования ActiveDirectory»?
Леонид наверное имел введу RSAT
1) Установить модуль на всех серверах можно через GPO(копирование файлов).
2) С помощью этого модуля можно реализвать установку только обновлений безопасности, без перезагрузки. Перезагрузку делать контролируемо.
С помощью WSUS и станартными натсройками GPO єтог не возможно было добиться.
«Invoke-WUInstall -ComputerName server1, server2, server1-Script {ipmo PSWindowsUpdate; Get-WUInstall -AcceptAll -AutoReboot | Out-File C:\Windows\PSWindowsUpdate.log } -Confirm:$false -Verbose -SkipModuleTest –RunNow»
Для этого еще нужно WinRm активировать и рарешить управление с определеных машин.
Верно?
Да, коннект через WinRm
Пытаюсь запустить обновление сразу на всех серверах
Import-Module ActiveDirectory
$TargetComps = Get-ADComputer -SearchBase «OU=Servers,OU=COMPANY,OU=Corporation,DC=company,DC=com» -Filter * | FT dNSHostName
Foreach ($comp in $TargetComps) {Invoke-WUInstall -ComputerName $comp -Script {ipmo PSWindowsUpdate; Get-WUInstall -Type ‘Security Updates’ -IgnoreReboot -SkipModuleTest –RunNow |
Out-File C:\Install\PSWindowsUpdate.log } -Confirm:$false }
Не понимает в таком формате…
Пробую передать список серверов в виде строки
Import-Module ActiveDirectory
$TargetComps = Get-ADComputer -SearchBase «OU=Servers,OU=COMPANY,OU=Corporation,DC=company,DC=com» -Filter * | FT dNSHostName
$comps = [string]::Join(‘, ‘,$TargetComps)
Invoke-WUInstall -ComputerName $comps -Script {ipmo PSWindowsUpdate; Get-WUInstall -Type ‘Security Updates’ -IgnoreReboot -SkipModuleTest –RunNow |
Out-File C:\Install\PSWindowsUpdate.log } -Confirm:$false
Получаю лабуду в виде
ПРЕДУПРЕЖДЕНИЕ: Machine Microsoft.PowerShell.Commands.Internal.Format.FormatStartData, Microsoft.PowerShell.Commands.Internal.Format.GroupStartData, Microsoft.PowerShell.Commands.
Internal.Format.FormatEntryData, Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData,
Как корректно передать список компьютеров из OU єтому модулю?
В первой команде уберите данную часть | ft dNSHostName.
А во второй команде в цикле сделайте так: -ComputerName $comp.name
Спасибо, но не помогло…
Import-Module ActiveDirectory
$TargetComps = Get-ADComputer -SearchBase "OU=СOMP" -Filter * # | FT dNSHostName
$comps = [string]::Join(‘, ‘,$TargetComps)
Invoke-WUInstall -ComputerName $comps.name -Script {ipmo PSWindowsUpdate; Get-WUInstall -Type 'Security Updates' -IgnoreReboot -SkipModuleTest –RunNow |
Out-File C:\Install\PSWindowsUpdate.log } -Confirm:$false
При таком варианте ничего не выполняется, впрочем как и с FT dNSHostName
Во-первых надо вот так:
Import-Module ActiveDirectory
$TargetComps = Get-ADComputer -SearchBase «OU=Servers,OU=COMPANY,OU=Corporation,DC=company,DC=com» -Filter *
Foreach ($comp in $TargetComps) {Invoke-WUInstall -ComputerName $comp.name -Script {ipmo PSWindowsUpdate; Get-WUInstall -Type ‘Security Updates’ -IgnoreReboot -SkipModuleTest –RunNow |
Out-File C:\Install\PSWindowsUpdate.log } -Confirm:$false }
Во-вторых попробуйте без цикла на одном сервере выполнить. Ошибка такая же будет
Вот более правильный вариант
Import-Module ActiveDirectory
$TargetComps = Get-ADComputer -SearchBase "OU=COMP" -Filter * # | FT dNSHostName
$comps = [string]::Join(‘, ‘,$TargetComps.name)
Invoke-WUInstall -ComputerName $comps -Script {ipmo PSWindowsUpdate; Get-WUInstall -Type 'Security Updates' -IgnoreReboot -SkipModuleTest –RunNow |
Out-File C:\Install\PSWindowsUpdate.log } -Confirm:$false
Но
ПРЕДУПРЕЖДЕНИЕ: Machine ***************
is not responding.
Т.е. нужно все-таки еще и все сервера в кавычки взять…
Кто знает как обработать аким образом строку?
В кавычки взял таким способом
$Servers ='»‘+[string]::Join(‘», «‘,$TargetServers.dNSHostName)+'»‘
А как из Wsus извлечь обновление (например, по номеру kb), чтобы получить исполняемый файл для тех мест, где нет Wsus, например exe-файл.
Модуль PSWindowsUpdate вам в этом не поможет. Обновления на WSUS хранятся в виде cab файлов, как сделать из них exe — не представляю. Раньше был у меня какой-то VBS скрипт, но он работал только с какой-то дремучей версией WSUS — позволяел получать exe файлы обновлений для Windows XP / Server 2003.
Сейчас наверно проще скачать нужный MSU файл обновления из каталога Microsoft Update.
А cab файл извлечь с помощью этого powershell можно (зная номер kb)?
cab-файл годится, прочитал здесь, что его тоже можно установить:
https://winitpro.ru/index.php/2018/01/17/offline-ustanovka-cab-i-msu-fajlov-obnovlenij-windows/
Интернет на целевом компьютере, в принципе, недоступен.
Есть еще такая штука, как WSUS Offline Update (_download.wsusoffline.net). Выкачиваете обнволения на компьютере с доступом в интернет, копируете на флешку и несите обновляете ваш изолированный ПК.
Еще в теории вы можете натравить ваш компьютер на каталог с файлами на WSUS сервере (wsuscontent) и запустить перебор всех папок с поиском подходящих cab файлов по схеме из статьи https://winitpro.ru/index.php/2014/06/11/integraciya-obnovlenij-v-obraz-windows-8/
Но как долго будет выполняться сканирование папки wsuscontent (у меня она занимает около 400 Гб) — я даже представить не могу.
Либо как вариант, если у вас везде одинаковые версии ОС — обновляете стендовый эталонный компьютер на WSUS, копируете с него каталог C:\Windows\SoftwareDistribution\Download на флешку и обновляете полученными cab файлами компьютеры в изолированной сети (все та же ссылка выше).
Один компьютер (1) подключен к Wsus (регулярно обновляется), но не к Интернету. Другой (2) (в другом подразделении) не подключен ни к Wsus, ни к Интернету. Встала задача: передать компьютер 2 все обновления Офиса 2016 компьютера 1. Попробовал с помощью PS скачать одно обновление (kb) с ключом Download. Скачалось, получилось два cab-файла. Попробовал их проинсталлировать https://winitpro.ru/index.php/2018/01/17/offline-ustanovka-cab-i-msu-fajlov-obnovlenij-windows/, не получилось, даже при помощи dism (он оказался на Win 7).
Бросил дальнейшую борьбу. В организации оказался набор обновлений офиса по май 2018 включительно (какой-то добрый человек в головной конторе как-то собрал). Передал на компьютер 2, этого оказалось достаточно (с точки зрения задачи обновления). Спасибо за помощь!
У меня ошибка возникает при выполнение скрипта
$Targets = «Server1», «Server2»
Update-WUModule -LocalPSWUSource «C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate» -ComputerName $Targets
Ошибка- Update-WUModule : The term ‘Update-WUModule’ is not recognized as the name of a cmdlet, function, script file, or opera
ble program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Модуль установлен. Помогите разобраться.
Проверьте, что модуль у вас загружен:
Import-Module PSWindowsUpdate
И командлет Update-WUModule присуствует среди доступных:get-command -module PSWindowsUpdate
Какая версия модуля PSWindowsUpdate? У меня была 1.5.2.6.
Проверил на разных компах, этот командлет не загружается Update-WUModule . Не знаю почему. Версия такая же.
Обновите пожалуйста статью версия уже другая, некоторые команды не работают
Статью обновил под актальную весрию модуля PSWindowsUpdate 2.1.1.2. Все старые команды выкинул.
У вас в статье Set-ExecutionPolicy RemoteSigned, а скрипты все неподписанные.
Подскажите пожалуйста, цепляюсь к машине через Enter-PsSession, далее запускаю проверку обновлений, потом установку. В процессе установки через какое-то время получаю:
Исключение при вызове «CreateUpdateDownloader» с «0» аргументами: «Отказано в доступе. (Исключение из HRESULT: 0x800700
05 (E_ACCESSDENIED))»
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate\Get-WUInstall.ps1:898 знак:53
+ $Downloader = $objSession.CreateUpdateDownloader <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
Не удается найти свойство "Updates" для данного объекта; убедитесь в том, что оно существует и является устанавливаемым
.
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate\Get-WUInstall.ps1:899 знак:17
+ $Downloader. <<<< Updates = $objCollectionTmp
+ CategoryInfo : InvalidOperation: (Updates:String) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound
У меня сработало так:
Invoke-WUJob -ComputerName $ServerName -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\Windows\PSWindowsUpdate.log } -RunNow -Confirm:$false
Invoke-WUJob : To Invoke-WUJob you need PSWindowsUpdate 2.0.0.0 on destination machine! Current module version is 1.5.2.6
Как обновить на Windows 7 до версии 2.0.0.0 так и не смог понять.
Вы подключаетесь из Windows 10 к Win 7? На Win 7 какая версия PowerShell? Модуль PSWindowsUpdate на Win 7 скопирован вручную и он >2.0?