Como iniciar o Windows Update no núcleo do servidor a partir de uma sessão remota do PS?

8

Quando estou conectado via área de trabalho remota em uma máquina com Windows Server 2012 R2 Core, posso acionar a atualização do Windows executando sconfig.cmd. No entanto, isso falha quando é chamado dentro de uma sessão remota do PS:

Enter-PSSession -ComputerName server2

Isto é o que o sconfig reclama. Basicamente, diz que não é possível encontrar um valor de registro específico. É engraçado notar que a Microsoft escolhe o VBScript sobre o PowerShell para programar esta interface 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.

Como devo / posso iniciar uma atualização do Windows quando estiver conectado via sessão remota PS?

    
por Matze 19.11.2014 / 20:45

2 respostas

7

Você não pode disparar isso diretamente sobre winrm / winrs.

Um pouco módulo popular de powershell para executar o Windows Updates do Powershell existe, e para executar atualizações em um sistema remoto, ele realmente copia o módulo para o sistema remoto e agenda uma nova tarefa única no sistema remoto.

No arquivo invoke-WUInstall.ps1, ele tem este comentário sobre disparar remotamente uma atualização.

Use Invoke-WUInstall to invoke Windows Update install remotly. It Based on TaskScheduler because CreateUpdateDownloader() and CreateUpdateInstaller() methods can't be called from a remote computer - E_ACCESSDENIED.

    
por 19.11.2014 / 21:42
1

Todos saudam o cartaz do último comentário. Funciona.

Obtenha os arquivos pswidowsupdate da web & descompacte-os. Em seguida, importe o módulo & execute este código (o arquivo invoke-wsuinstall.ps1 tem o código de exemplo, mas eu removi um pouco dele e ele ainda funciona):

$Script = {Get-WUInstall -AcceptAll -AutoReboot | Out-File C:\PSWindowsUpdate.log}
Invoke-WUInstall -ComputerName computername -Script $Script
Get-Content \ \ computername\c$\PSWindowsUpdate.log
    
por 23.07.2015 / 09:39