Когда я вхожу в систему через удаленный рабочий стол на машине с Windows Server 2012 R2 Core, я могу запустить обновление Windows, запустив sconfig.cmd. Однако это не удается, когда он вызывается в удаленном сеансе PS:
Enter-PSSession -ComputerName server2
Вот на что жалуется sconfig. По сути, он говорит, что не может найти конкретное значение реестра. Забавно отметить, что Microsoft выбирает VBScript вместо PowerShell для программирования этого интерфейса командной строки ...
[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.
Как я могу / могу инициировать обновление Windows при входе в систему через удаленный сеанс PS?
На самом деле вы не можете запустить это напрямую через winrm / winrs.
Несколько популярный модуль PowerShell для выполнения обновлений Windows из Powershell существует, а для выполнения обновлений в удаленной системе он фактически копирует модуль в удаленную систему и планирует новую одноразовую задачу в удаленной системе.
В файле invoke-WUInstall.ps1 есть этот комментарий об удаленном запуске обновления.
Используйте Invoke-WUInstall, чтобы вызвать удаленную установку Центра обновления Windows. Он основан на 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