Tags: PowerShell, Kommandozeile, Registry, Patch-Management
Die meisten Windows-Updates erfordern einen Neustart des Systems. Während dieser auf dem Client per Voreinstellung automatisch erfolgt und der Benutzer ausgiebig darauf hingewiesen wird, sind die Verhältnisse auf dem Server nicht immer so offensichtlich. Will man sich Klarheit über anstehende Reboots verschaffen, dann kann man dies (besonders unter Server Core) via Kommandozeile tun.
Ein wesentlicher Grund, warum man über anstehende Neustarts informiert sein möchte, besteht darin, dass sich weitere Updates nicht installieren lassen, solange die vorhergehenden nicht durch einen Reboot wirksam wurden. Da ein automatischer Neustart auf dem Server meistens unerwünscht ist, kann somit einige Zeit verstreichen, bis die installierten Patches den Rechner schützen.
Update-Informationen in der Registry
Windows verfügt über kein Tool, das Informationen über ausstehende Updates und notwendige Reboots informiert. Es verwaltet diese Daten jedoch über die Registry, so dass man nur die entsprechenden Schlüssel auslesen muss, um Bescheid zu wissen. Sie informieren nicht nur darüber, ob ein Neustart fällig ist, sondern auch wann dieser automatisch erfolgt und welche Updates damit wirksam werden.
Allerdings sind diese Daten seit Vista über zwei verschiedene Zweige der Registrierungsdatenbank verstreut, so dass man die benötigten Einzelheiten unter Umständen an verschiedenen Orten zusammenklauben muss.
Schlüssel RebootRequired auslesen
Der schon unter XP genutzte Speicherort für Infos zu Windows Update ist unter HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate. Hier finden sich mehrere Subkeys, die unter anderem über einen fälligen Neustart, die dafür verantwortlichen Updates oder die Uhrzeit für den automatischen Reboot anzeigen.
Sie lassen sich allesamt mit einem PowerShell-Befehl abrufen:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
Wer Berührungsängste mit PowerShell hat, kann das äquivalente Kommando für reg.exe nutzen:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
Wenn keine Updates und damit auch kein Neustart anstehen, dann existiert dieser Schlüssel nicht. Wenn man daher nur wissen möchte, ob ein Reboot erforderlich ist, dann würde auch dieses Kommando reichen:
Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
RebootPending als Alternative
Der mit Vista eingeführte Key enthält weitgehend redundante Informationen und lässt sich mit PowerShell nach dem gleichen Muster abfragen:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\"
Falls ein Neustart ansteht, dann existiert dort ein Schlüssel namens RebootPending. Diesen kann man wieder direkt mit Test-Path prüfen:
Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending"
In diesem Zweig der Registry erhält man aber keine Auskunft über die geplante Zeit eines automatischen Neustarts. Dafür zeigt er unter DelayedPackages die Namen der zu installierenden Updates an, die man unter Auto Update nicht sieht.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Microsoft Defender: Updates für Viren-Signaturen über Gruppenrichtlinien und PowerShell steuern
- Exchange 2019: Neue Intervalle für CUs, kostenlose Hybrid-Lizenz, Update für Management Tools
- Windows Update for Business via Deployment Service und PowerShell steuern
- PowerShell 7.2: Automatische Updates, PSReadLine 2.1, drei Jahre Support
- Windows-Images mit OSDBuilder automatisch offline aktualisieren
Weitere Links
1 Kommentar
Vielen Dank, hat sehr geholfen!
Möchte das Skript auf dem betroffenen System laufen lassen, eine Textdatei auf einer Freigabe erzeugen und von Nagios abholen lassen und auswerten (Skript-Ausführung durch NCAP wurde aufgrund von Sicherheitsbedenken verboten).