"invoke-command" mit wusa.exe in Powershell - installiert die msu nicht

12581
bjscollura

Ich versuche, ein Windows-Hotfix mithilfe von PowerShell v3 auf eine Reihe von Computern in unserem Netzwerk zu übertragen. Ich habe die entsprechende .msuDatei heruntergeladen und konnte sie erfolgreich von der lokalen Maschine in der Befehlszeile installieren.

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

Das Problem entsteht, wenn ich versuche, es von Powershell aus auszuführen. Wir können davon ausgehen, dass sich die msu bereits auf jedem Rechner befindet c:\temp\hotfixname.msu, und dass PSRemoting bereits aktiviert ist. Folgendes habe ich mehr oder weniger:

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" } } } 

Wenn er wie folgt von meiner eigenen Admin-Box aus ausgeführt wird und Powershell als Admin ausführt, öffnet der lokale Computer einen wusa.exeProzess für etwa eine Sekunde, bevor er verschwindet. Es ist nichts installiert.

Ich kann laufen CMD /C "wusa.exe /?, und es öffnet den Prozess (er hängt, aber nur, weil wusaseine Hilfe in einer GUI geöffnet wird).

Ich habe keine Ideen - hat jemand einen Rat dazu? Fehlt mir etwas?

1

2 Antworten auf die Frage

3
Josh

Da PSRemoting WinRM verwendet und nach dieser sieht es nicht wie Sie verwenden können, wusa.exemit WinRM oder WinRS es nicht möglich, sieht mit dem Code, den Sie aufgelistet.

Es wird jedoch eine Problemumgehung aufgelistet:

Extrahieren Sie die MSU-Datei über WUSA mit der folgenden Windows-Remote-Shell:

winrs.exe -r:% computername% wusa.exe% kb-update% / extract:% destination%

Installieren Sie anschließend das CAB-Paket mit dism.exe oder Package Manager. Verwenden Sie den folgenden Befehl, um dism.exe zu verwenden:

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

Wir haben eine geplante Aufgabe ausgeführt, um den lokalen PC zur Ausführung von wusa.exe zu zwingen, was den Trick zu erfüllen schien! bjscollura vor 9 Jahren 2
0
tatan

Remote-Update von Powershell von 3 -> 5.1 (Windows7) über die WinRM-Schnittstelle und den Ansible-Server - PSH-Update-psh.ps1-Skript (bei mir gearbeitet):

# 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 
Bitte korrigieren Sie die Formatierung Ihrer Antwort (kein Code-Tag erforderlich, nur relevante Zeilen mit 4 Leerzeichen einrücken ...) Pierre.Vriens vor 6 Jahren 1