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

当我通过Windows Server 2012 R2核心机器上的远程桌面login时,可以通过运行sconfig.cmd来触发Windows更新。 然而,当它在一个PS远程会话中被呼叫时失败:

Enter-PSSession -ComputerName server2 

这是sconfig的抱怨。 它基本上说,它无法find一个特定的registry值。 有趣的是,MicrosoftselectPowerShell上的VBScript来编程此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远程会话login时启动Windows Update?

你不能直接通过winrm / winrs触发。

存在一个颇受欢迎的 PowerShell 模块,用于从Powershell执行Windows更新,并在远程系统上执行更新,实际上将模块复制到远程系统,并在远程系统上安排新的一次性任务。

在invoke-WUInstall.ps1文件中,它有关于远程触发更新的评论。

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

所有人都热衷于最后评论的海报。 有用。

从网站获取pswidowsupdate文件并将其解压缩。 然后导入模块并运行此代码( 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