当我通过 Windows Server 2012 R2 Core 机器上的远程桌面登录时,我可以通过运行 sconfig.cmd 来触发 Windows 更新。但是,当它在 PS 远程会话中被调用时,它会失败:
Enter-PSSession -ComputerName server2
这就是 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.
通过 PS 远程会话登录时,我应该/如何启动 Windows 更新?
您实际上不能直接通过 winrm/winrs 触发它。
存在一种用于从 Powershell 执行 Windows 更新的流行的 powershell 模块(PSWindowsUpdate),为了在远程系统上执行更新,它实际上将模块复制到远程系统并在远程系统上安排新的一次性任务。
在 invoke-WUInstall.ps1 文件中,它有关于远程触发更新的注释。
FWIW,在 Windows Server 2019 上,您可以使用
该数组
$u
告诉你有哪些可用的更新,如果它是空的,你就完成了。布尔值
$b
告诉您是否需要重新启动。重新启动后,您应该再次扫描更新。所有人都向最后一条评论的海报致敬。有用。
pswidowsupdate
从网上获取文件并解压缩。然后导入模块并运行此代码(该invoke-wsuinstall.ps1
文件有示例代码,但我从中删除了一点,它仍然有效):