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でヘルプを開くためです)。
私はアイデアがありません-誰かがこれについて何かアドバイスがありますか?足りないものはありますか?
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
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