web-dev-qa-db-ja.com

PSリモートセッションからサーバーコアでWindows Updateを開始する方法

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をどのように/開始できますか?

8
Matze

実際には、winrm/winrsで直接トリガーすることはできません。

PowershellからWindows Updatesを実行するためのやや 人気のあるpowershellモジュール が存在し、リモートシステムで更新を実行するには、実際にモジュールをリモートシステムにコピーし、リモートシステムで新しいワンタイムタスクをスケジュールします。

Invoke-WUInstall.ps1ファイルには、リモートで更新をトリガーすることに関するこのコメントがあります。

Invoke-WUInstallを使用して、Windows Updateインストールをリモートで呼び出します。 CreateUpdateDownloader()およびCreateUpdateInstaller()メソッドはリモートコンピューターから呼び出せないため、これはTaskSchedulerに基づいています-E_ACCESSDENIED。

7
Zoredache

すべては最後のコメントのポスターを歓迎します。できます。

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
1
edwin