Сценарий Powershell для массового обновления обновлений Windows на многих компьютерах

У меня есть этот скрипт:

Invoke-WUJob -ComputerName comp-1,comp-2,comp-3 -Script {ipmo PSWindowsUpdate; Get-WUInstall -Install -AcceptAll | Out-File C:\PSWindowsUpdate.log  } -Confirm:$false -Verbose –RunNow

и после выполнения я получаю это:

Invoke-WUJob: модуль PSWindowsUpdate отсутствует на целевом компьютере В строке: 1 char: 1 + Invoke-WUJob -ComputerName 1002-hk-ws-001,1002-hk-ws-002,1002-hk-ws-0 ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ResourceUnavailable: (:) [Invoke-WUJob], Exception + FullyQualifiedErrorId: ModuleMissing,PSWindowsUpdate.InvokeWUJob

Я использовал эти команды ниже на каждом ПК для установки PSWindowsUpdate и установки winrm, и это все еще не работает:

winrm quickconfig -q 

winrm set winrm/config/client ‘@{TrustedHosts="comp1,comp2,comp3"}’

Set-ExecutionPolicy RemoteSigned

Install-Module PSWindowsUpdate -Scope CurrentUser -Force

Любые идеи?


person overtkill    schedule 04.02.2020    source источник


Ответы (3)


обновление Windows не может использовать удаленно, возможно, усиление защиты, вы можете работать с задачей расписания Register-ScheduledJob -scriptblock {get-windowsupdate -acceptall}

person Kenneth Yeung    schedule 04.02.2021

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

Вы должны быть администратором на цели, чтобы запустить это.

about_Remote_Requirements

Если не делать дополнительных конфигов.

Вы Не нужно быть администратором для запуска удаленных команд PowerShell

Таким образом, вам необходимо передать учетные данные в свой код, если вы еще не запустили сеанс PowerShell с учетными данными администратора для удаленных целей. Это действительно удаленное взаимодействие PowerShell 101 и хорошо задокументированный вариант использования.

Ваша ошибка говорит о том, что модуль не находится на удаленном хосте или не может быть найден.

Обновления Windows — это вещь на уровне машины. Таким образом, импорт должен осуществляться в профиль AllUsers PowerShell, а не в какой-либо отдельный пользователь машин. Требуется дополнительная работа, чтобы заставить PSRemoting работать в системах рабочих групп. Для хостов, присоединенных к домену, вы можете включить его с помощью GPO. Нет необходимости в дополнительных шагах.

См. шаги здесь:

Включить удаленное взаимодействие PowerShell на автономном компьютере (в рабочей группе)< /а>

Выполняемый код в удаленных системах всегда будет выполняться в контексте пользователя, который вы запустили, независимо от того, кто находится на удаленной цели.

person postanote    schedule 05.02.2020
comment
Итак, теперь я получаю другую ошибку: Invoke-WUJob: вы не можете найти запрошенный файл. (Ошибка HRESULT: 0x80070002) В строке: 1 символ: 1 + Invoke-WUJob -ComputerName 1002-ski-ws-003,1002-ski-nb-002 -Script {i ... + ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Invoke-WUJob], FileNotFoundException + FullyQualifiedErrorId : System.IO.FileNotFoundException, PSWindowsUpdate.InvokeWUJob - person overtkill; 05.02.2020
comment
Я установил все на удаленные машины в: Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate, но похоже, что он все еще не видит модуль? - person overtkill; 05.02.2020

Итак, теперь я получаю другую ошибку:

Invoke-WUJob: Вы не можете найти запрошенный файл. (Ошибка HRESULT: 0x80070002) В строке: 1 символ: 1 + Invoke-WUJob -ComputerName 1002-ski-ws-003,1002-ski-nb-002 -Script {i ... + ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Invoke-WUJob], FileNotFoundException + FullyQualifiedErrorId : System.IO.FileNotFoundException, PSWindowsUpdate.InvokeWUJob

Я установил все на удаленные машины в: Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate, но похоже, что он все еще не видит модуль?

person overtkill    schedule 05.02.2020