"invoke-command", использующий wusa.exe в powershell - не устанавливает msu

12569
bjscollura

Я пытаюсь установить исправление для Windows на несколько компьютеров в нашей сети, используя PowerShell v3. Я скачал соответствующий .msuфайл и смог успешно установить его с локальной машины в командной строке, используя:

wusa c:\temp\hotfixname.msu /quiet /norestart 

Проблема возникает, когда я пытаюсь запустить его из powershell. Можно предположить, что msu уже есть у всех на компьютере c:\temp\hotfixname.msu, и что PSRemoting уже включен. Вот что у меня более или менее:

import-module ActiveDirectory  $AllPCs = Get-ADComputer -SearchBase "Appropriate OU Here" -filter *  $AllPCs | Foreach { Invoke-Command -ComputerName "$($_.name)" -AsJob -ScriptBlock {  if (!(Get-HotFix -id hotfixkb)) { CMD /C "wusa.exe c:\temp\hotfixname.msu /quiet /norestart" } } } 

При запуске таким образом из моего собственного окна администратора с запуском PowerShell от имени администратора локальный компьютер открывает wusa.exeпроцесс на секунду или около того, прежде чем он исчезает. Ничего не установлено.

Я могу запустить CMD /C "wusa.exe /?, и он действительно открывает процесс (он зависает, но только потому, что wusaоткрывает свою помощь в графическом интерфейсе).

У меня нет идей - есть у кого-нибудь совет по этому поводу? Я что-то упускаю?

1

2 ответа на вопрос

3
Josh

Поскольку PSRemoting использует WinRM и в соответствии с этим не похоже, что вы можете использовать wusa.exeс WinRM или WinRS, это не выглядит возможным с кодом, который вы перечислили.

Однако есть обходной путь:

Извлеките файл MSU через Windows Remote Shell с WUSA, используя следующую команду:

winrs.exe -r:% computername% wusa.exe% kb-update% / extract:% назначение%

По завершении установите пакет .cab с помощью dism.exe или диспетчера пакетов. Чтобы использовать dism.exe, используйте команду ниже:

winrs.exe -r:% computername% dism.exe / online / add-package /PackagePath:%Path_To_Package%\KBnnnnnnn.cab

Мы закончили выполнение запланированной задачи, чтобы заставить локальный компьютер запустить wusa.exe, что, похоже, помогло! bjscollura 9 лет назад 2
0
tatan

удаленное обновление powershell с 3 -> 5.1 (windows7), через интерфейс WinRM и сервер Ansible - скрипт PSH update-psh.ps1 (работал для меня):

# install POWERSHELL update # descr. wusa: https://support.microsoft.com/en-us/help/934307/description-of-the-windows-update-standalone-installer-in-windows # descr. dism: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-operating-system-package-servicing-command-line-options   Start-Process -FilePath 'wusa.exe' -ArgumentList "C:\workit\updatePSH\Win7AndW2K8R2-KB3191566-x64.msu /extract:C:\workit\updatePSH" -Verb RunAs -Wait -Passthru  Start-Sleep -Seconds 5  Start-Process -FilePath 'dism.exe' -ArgumentList "/online /add-package /PackagePath:C:\workit\updatePSH\WSUSSCAN.cab /PackagePath:C:\workit\updatePSH\Windows6.1-KB2809215-x64.cab /PackagePath:C:\workit\updatePSH\Windows6.1-KB2872035-x64.cab /PackagePath:C:\workit\updatePSH\Windows6.1-KB2872047-x64.cab /PackagePath:C:\workit\updatePSH\Windows6.1-KB3033929-x64.cab /PackagePath:C:\workit\updatePSH\Windows6.1-KB3191566-x64.cab /IgnoreCheck /quiet" -Verb RunAs -Wait -PassThru 
исправьте форматирование вашего ответа (нет необходимости в теге 'code', просто вставьте соответствующие строки с 4 пробелами ...) Pierre.Vriens 6 лет назад 1

Похожие вопросы