Как запустить Центр обновления Windows на ядре сервера из удаленного сеанса PS?

8

Когда я вошел в систему через удаленный рабочий стол на компьютере под управлением Windows Server 2012 R2 Core, я могу запустить обновление Windows, запустив sconfig.cmd. Это однако терпит неудачу, когда его вызывают в удаленном сеансе PS:

Enter-PSSession -ComputerName server2

Это то, на что жалуется sconfig. Это в основном говорит, что он не может найти конкретное значение реестра. Забавно отметить, что Microsoft выбирает 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.

Как / можно запускать Центр обновления Windows при входе через удаленный сеанс PS?

Matze
источник
2
Я не читаю по-немецки, но это сообщение «Разрешения / доступ запрещен»? Дело в том, что установка обновлений Windows удаленно без использования SCCM или WSUS - огромная проблема. Каждый метод, который я видел, который действительно работает, полагается на PSexec (или подобный) для выполнения команды локально, но с удаленного компьютера. Я думаю, что в итоге я использую WuInstall или BatchPatch, когда мне нужно сделать что-то подобное, без SCCM. В Technet также есть несколько модулей PowerShell для такого рода вещей, которые могут быть полезны, поскольку мой опыт работы с ними был очень удачным. В основном скучаю.
HopelessN00b
3
О, почти забыл. Лучшее бесплатное, не пробное / бесплатное приложение, которое я видел для удаленной установки обновлений Windows без SCCM / WSUS / и т. Д. это PoshPAIG , а у The Scripting Guy есть статья в блоге об этом, которую вы, возможно, захотите проверить . Это не совсем то, что вы ищете, но это так близко, как вы получите, не катя свой собственный.
HopelessN00b
@Zoredache Но ответы там отстой. Твой намного лучше, и я не буду голосовать, чтобы обмануть это только на этой основе.
HopelessN00b

Ответы:

7

Вы не можете вызвать это непосредственно через winrm / winrs.

Существует довольно популярный модуль powershell для выполнения обновлений Windows из Powershell, и для выполнения обновлений в удаленной системе он фактически копирует модуль в удаленную систему и планирует новую одноразовую задачу в удаленной системе.

В файле invoke-WUInstall.ps1 есть комментарий об удаленном запуске обновления.

Используйте Invoke-WUInstall для немедленного запуска установки Windows Update. Он основан на TaskScheduler, потому что методы CreateUpdateDownloader () и CreateUpdateInstaller () не могут быть вызваны с удаленного компьютера - E_ACCESSDENIED.

Zoredache
источник
1

Приветствую вас на постере последнего комментария. Оно работает.

Получить 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
Эдвин
источник