Windows Server 2012 R2 Coreマシンのリモートデスクトップ経由でログインしている場合、sconfig.cmdを実行してWindowsの更新をトリガーできます。ただし、PSリモートセッション内で呼び出されると、これは失敗します。
Enter-PSSession -ComputerName server2
これがsconfigの不満です。基本的に、特定のレジストリ値を見つけることができないと述べています。興味深いことに、MicrosoftはこのCLIインターフェイスをプログラムするためにPowerShellよりVBScriptを選択しています...
[server2]: PS C:\> sconfig
C:\>echo off
sconfig : FEHLER: Der angegebene Registrierungsschl?ssel bzw. Wert wurde nicht gefunden.
+ CategoryInfo : NotSpecified: (FEHLER: Der ang...nicht gefunden.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Microsoft (R) Windows Script Host, Version 5.8
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
System wird ?berpr?ft...
[...]
14) Server herunterfahren
15) Zur Befehlszeile wechseln
C:\Windows\System32\de-DE\sconfig.vbs(326, 1) Laufzeitfehler in Microsoft VBScript: Eingabe hinter Dateiende.
PSリモートセッション経由でログインしているときに、Windows Updateをどのように/開始できますか?
実際には、winrm/winrsで直接トリガーすることはできません。
PowershellからWindows Updatesを実行するためのやや 人気のあるpowershellモジュール が存在し、リモートシステムで更新を実行するには、実際にモジュールをリモートシステムにコピーし、リモートシステムで新しいワンタイムタスクをスケジュールします。
Invoke-WUInstall.ps1ファイルには、リモートで更新をトリガーすることに関するこのコメントがあります。
Invoke-WUInstallを使用して、Windows Updateインストールをリモートで呼び出します。 CreateUpdateDownloader()およびCreateUpdateInstaller()メソッドはリモートコンピューターから呼び出せないため、これはTaskSchedulerに基づいています-E_ACCESSDENIED。
すべては最後のコメントのポスターを歓迎します。できます。
pswidowsupdate
ファイルをWebから取得して解凍します。次に、モジュールをインポートしてこのコードを実行します(invoke-wsuinstall.ps1
ファイルにはサンプルコードが含まれていますが、そこから少し削除しても機能します):
$Script = {Get-WUInstall -AcceptAll -AutoReboot | Out-File C:\PSWindowsUpdate.log}
Invoke-WUInstall -ComputerName computername -Script $Script
Get-Content \ \ computername\c$\PSWindowsUpdate.log