web-dev-qa-db-ja.com

PowerShellでwusa.exeを使用する「invoke-command」-msuをインストールしません

PowerShell v3を使用して、ネットワーク上の多数のコンピューターにWindowsの修正プログラムをプッシュしようとしています。適切な.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プロセスを1秒ほど開いてから消えます。何もインストールされていません。

CMD /C "wusa.exe /?を実行すると、プロセスが開きます(ハングしますが、wusaがGUIでヘルプを開くためです)。

私はアイデアがありません-誰かがこれについて何かアドバイスがありますか?足りないものはありますか?

1
bjscollura

PSRemotingはWinRMを使用し、 this によると、WinRMまたはWinRSでwusa.exeを使用できるようには見えないため、リストしたコードでは不可能に見えます。

ただし、リストされている回避策があります。

次のコマンドを使用して、WUSAを使用してWindowsリモートシェルから.msuファイルを抽出します。

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

完了したら、dism.exeまたはパッケージマネージャーを使用して.cabパッケージをインストールします。 dism.exeを使用するには、次のコマンドを使用します。

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

3
Josh

winRMインターフェイスとAnsibleサーバーを介した3-> 5.1(windows7)からのPowerShellのリモート更新-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
0
tatan