Update Windows 10 aus der Konsole

Die regelmäßige Aktualisierung von Windows empfinde ich weitgehend als eine Katastrophe. Entweder aktualisiert sich Windows zum unpassenden Zeitpunkt (hatte ich gerade bei einem Kunden, bei dem das erzwungene Update während der Remoteschulung die Teilnehmer ziemlich blockiert hat) oder man deaktiviert das automatische Aktualisieren und dann ist man Out-Of bzw. die Geschichte lässt sich u:u: nicht wieder anschalten oder man sucht sich einen Zeitplan raus, von dem man vermutet, dass die Aktualisierungen nicht irgendwas anderes verhindern. Alles nicht wirklich der Bringer.

Auf meinen drei im Business-Einsatz genutzten Windows-10-Rechnern funktioniert das Windows-Update eigentlich nur auf meiner Workstation ohne großes Eingreifen. Und das auch nicht perfekt.

Auf meinem alten Terra-Notebook kann ich auf wuauserv gar nicht zugreifen. Ich bekomme immer einen Zugriffsfehler, wenn ich den Service starten will. Ich habe schon zig Wege versucht, aber alles ist bisher schief gelaufen (und selbstverständlich habe ich im Administrator-Modus gearbeitet). Auf dem Rechner bin ich mittlerweile mit einem Updates auf einem Stand von Anodazumal :-(. Was mich aber auch nicht extrem beunruhigt, da das Notebook schon mindestens 7 – 8 Jahre auf dem Buckel hat und nur durch ein Schnäppchen einer riesigen Notebook-SSD vor 2 Jahren vom kompletten Ausmustern gerettet wurde. Das Gerät ist wirklich nur noch mein Backup – sowohl als PC als auch Datenbackup vom NAS. Also Backup vom Backup. Dennoch – irgendwie will ich auch da mal ein Update hinbekommen. Ich spiele schon eine ganze Weile in der Powershell und mit net hin und her, aber bisher scheitert alles an den Zugriffsproblemen auf wuauserv.

Noch blöder ist es, dass ich auf meinem aktuellen Huawei-Matebook nur Windows Home mitgeliefert bekommen habe. Eine wirklich armselige Windows-Version (ja – me culpa – ich hätte ja schon auf die Pro-Version umsteigen können, aber bisher hatte ich noch keinen zwingenden Grund gesehen). Da hat man ja so gut wie keine Kontrolle über die Updates. Nicht einmal in den Einstellungen lässt sich der Dialog öffnen (warum auch immer). Ich bin bisher nicht einmal so ganz im Klaren gewesen, ob und welche Updates da installiert waren.

Aber da habe ich jetzt eine sinnvolle Lösung gefunden, um mit NuGet oder in der PowerShell Updates zu dem Zeitpunkt und dem von mir gewünschten Umfang zu erzwingen, wenn ich das will. Da ich die nächsten Wochen ein paar Remote-Schulungen zu C# halten werde, wollte ich vorher sowieso Visual Studio auf den neusten Stand bringen und dabei gleich NuGet ebenso. Und damit kann man dann auch Windows Updates komplett erzwingen. Schön in der Paket Manager-Konsole statt der grafischen, klebrigen Micky-Mouse-Oberfläche der PC Einstellungen. Oder man nutzt eben die PowerShell. Beides natürlich im Administrator-Modus.

Und das geht über die PowerShell so, dass man entweder PSWindowsUpdate oder WindowsUpdateProvider (Install-WUUpdates) verwendet. PSWindowsUpdate soll angeblich gegenüber des von Microsoft bereitgestellten PowerShell-Moduls Install-WUUpdates / Start-WUScan einige Vorteile bringen, aber da bin ich auf Hörensagen angewiesen.
Mit

Get-Command -Module WindowsUpdateProvider

findet man aber erst einmal heraus, welche Windows-Update-Provider auf einem PC verfügbar sind. Damit sieht man dann in etwa so etwas:

PS C:\WINDOWS\system32> Get-Command -Module WindowsUpdateProvider

CommandType Name Version Source
———– —- ——- ——
Function Get-WUAVersion 1.0.0.2 WindowsUpdateProvider
Function Get-WUIsPendingReboot 1.0.0.2 WindowsUpdateProvider
Function Get-WULastInstallationDate 1.0.0.2 WindowsUpdateProvider
Function Get-WULastScanSuccessDate 1.0.0.2 WindowsUpdateProvider
Function Install-WUUpdates 1.0.0.2 WindowsUpdateProvider
Function Start-WUScan 1.0.0.2 WindowsUpdateProvider

Sobald ein ausreichend neuer Build vorhanden ist, kann man dann Updates suchen und installieren (Updates für Windows und andere Microsoft-Produkte):

$Updates = Start-WUScan -SearchCriteria „IsInstalled=0 AND IsHidden=0 AND IsAssigned=1“
Write-Host „Updates gefunden: “ $Updates.Count
Install-WUUpdates -Updates $Updates

Ein anderer Weg führt eben über das PSWindowsUpdate-Modul, das so aus der PowerShell installiert werden kann (oder man nutzt einfach Visual Studio und da dann die Paket-Manger Konsole):

Install-Module -Name PSWindowsUpdate -Force

Danach kann man nach der Version schauen:

Get-Package -Name PSWindowsUpdate

 

Aber das passende NuGet-Version muss dabei vorhanden sein, wobei die auch bei Bedarf nachinstalliert wird. Die Ausgabe wird so etwas sein:

Name Version Source ProviderName
—- ——- —— ————
PSWindowsUpdate 2.2.0.2 https://www.powershellgallery… PowerShellGet

 

Für den nächsten Schritt sollten die Ausführungsrichtlinien für den aktuellen Prozess auf uneingeschränkt gesetzt werden:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force

Und dann holt man die verfügbaren Updates so:

Get-WindowsUpdate -MicrosoftUpdate -Verbose

Die Installation von allem ohne weitere Rückfrage geht dann so:

Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot

Soweit habe ich die Sache mit meinem Matebook auch schon erfolgreich durchgespielt und jetzt werde ich mir das Terra-Notebook und auch die Workstation vornehmen und mal sehen, was ich da aktualisieren kann oder auch nicht.

Wenn das alles nicht hilft, werde ich nochmal den folgenden Tipp in der Admin-Konsole versuchen:

net stop wuauserv

net stop bits

cd %systemroot%

ren SoftwareDistribution SoftwareDistribution.bak

net start bits

net start wuauserv

Ich habe zwar wenig Hoffnung, dass die Geschichte insbesondere bei den Zugriffsproblemen auf wuauserv was hilft, aber vielleicht nutzt die Schrittfolge ja jemand anderem oder in einer anderen Konstellation beim Update.