如何从 PS 远程会话启动服务器核心上的 Windows 更新?

Mat*_*ert 9 remote-access windows-update windows-server-2012-r2 powershell-v4.0

当我在 Windows Server 2012 R2 Core 机器上通过远程桌面登录时,我可以通过运行 sconfig.cmd 来触发 Windows 更新。然而,当它在 PS 远程会话中被调用时会失败:

Enter-PSSession -ComputerName server2
Run Code Online (Sandbox Code Playgroud)

这就是 sconfig 抱怨的。它基本上说它找不到特定的注册表值。一个有趣的事情是微软选择 VBScript 而不是 PowerShell 来编程这个 CLI 界面......

[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.
Run Code Online (Sandbox Code Playgroud)

通过 PS 远程会话登录时,我应该/如何启动 Windows 更新?

Zor*_*che 7

您实际上无法直接通过 winrm/winrs 触发它。

存在一种用于从 Powershell 执行 Windows 更新的有点流行的 powershell 模块(PSWindowsUpdate),为了在远程系统上执行更新,它实际上将模块复制到远程系统并在远程系统上安排新的一次性任务。

在 invoke-WUInstall.ps1 文件中,它包含有关远程触发更新的注释。

使用 Invoke-WUInstall 远程调用 Windows 更新安装。它基于 TaskScheduler,因为无法从远程计算机调用 CreateUpdateDownloader() 和 CreateUpdateInstaller() 方法 - E_ACCESSDENIED。