"Invoke-command" за допомогою wusa.exe в powershell - не встановить msu


1

Я намагаюся виправити вікно виправлення до декількох комп'ютерів у нашій мережі, використовуючи PowerShell v3. Я завантажив відповідний .msu Файл, я зміг успішно встановити його з локальної машини в командному рядку, використовуючи:

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

Проблема виникає, коли я намагаюся запустити її з powershell. Можна припустити, що мсу вже на кожній машині, при 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 в якості адміністратора, локальна машина відкриває a wusa.exe процес на секунду або близько того, перш ніж він зникне. Нічого не встановлено.

Я можу бігти CMD /C "wusa.exe /?, і це відкриває процес (він зависає, але тільки тому, що wusa відкриває свою допомогу в GUI).

Я з ідеї - хто-небудь є які-небудь поради з цього приводу? Є щось, чого мені не вистачає?

Відповіді:


3

З PSRemoting використовується WinRM і відповідно до це це не виглядає, як ви можете використовувати wusa.exe з WinRM або WinRS не виглядає можливим з переліченим вами кодом.

Проте вказано обхідний шлях:

Розпакуйте файл .msu через Windows Remote Shell за допомогою WUSA за допомогою наступної команди:

winrs.exe -r: ім'я_комп'ютера% wusa.exe% kb-update% / extract:% призначення%

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

winrs.exe -r: ім'я_комп'ютера% dism.exe / online / add-package /PackagePath:%Path_To_Package% \ t


2
Ми запустили виконання запланованого завдання, щоб змусити локальний комп'ютер запустити wusa.exe, який, здавалося, зробив свій трюк!
bjscollura

0

віддалене оновлення powershell з 3 - & gt; 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

1
Будь ласка, виправте форматування вашої відповіді (немає необхідності в тезі "code", лише відступи відповідних рядків з 4 пробілами ...)
Pierre.Vriens
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.