Dmitry Nikolaev - stock.adobe.co

Wie Sie das Pending-Reboot-Modul von PowerShell testen

Mit dem PowerShell-Modul Pending Reboot prüfen Sie, ob Computer innerhalb Ihres Netzwerks auf einen Neustart warten. Das verhindert Schwierigkeiten nach Änderungen.

In Windows-Umgebungen sind Neustarts oft notwendig. Mit dem Pending Reboot-Modul von PowerShell vereinfachen Sie ausstehende Neustarts.

Neustarts sind notwendig, um Vorgänge wie das Aktualisieren von Treibern und das Installieren von Patches, Software von Drittanbietern und Windows-Funktionen erfolgreich abzuschließen. Ein Neustart gibt Windows die Möglichkeit, Dateien zu ändern oder zu entfernen, ohne Instabilität zu verursachen.

Das PowerShell-Modul für ausstehende Neustarts wurde von Brian Wilhite, einem Microsoft Premier Field Engineer, erstellt. Es bietet Ihnen einen schnellen Weg, um den Status von PCs zu ermitteln.

Pending Reboot-Modul: Erste Schritte

Verwenden Sie die PowerShell-Galerie, um das PowerShell-Modul für ausstehende Neustarts zu installieren.

PS C:\> Install-Module PendingReboot

Laden Sie nun das Modul mit dem Cmdlet Test-PendingReboot in die aktuelle PowerShell-Sitzung. Wenn Sie sich den Code im PowerShell-Cmdlet Pending Reboot ansehen, erkennen Sie, wo das Cmdlet in der Windows Registry einen anstehenden Neustart identifiziert. Diese Speicherorte sind der komponentenbasierten Wartung (CBS), Windows Update, einer Active-Directory-Verbindung (AD) und dem Configuration Manager Software Delevopment Kit (CM SDK) zugeordnet.

Microsoft hat den CBS-Stack mit Windows Vista eingeführt. Er umfasst verschiedene Tools, um Windows zu warten und das Betriebssystem stabil zu halten. CBS hat verschiedene Ebenen für die Wartung. Die erste ist für Windows Update, Programme und Funktionen sowie MSI. Die zweite Ebene ist das vertrauenswürdige Installationsprogramm, das bei bestimmten Installationen im Task-Manager läuft. Die letzte Stufe ist für Kernel-Transaktionen mit Windows gedacht.

PowerShell-Experten, die ihren eigenen Testcode schreiben möchten, statt unser fertiges Cmdlet zu verwenden, können nach True- oder False-Neustart-Bedingungen in drei gängigen Windows-Registry-Einträgen suchen:

  • RebootPending: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing
  • RebootRequired: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update
  • PendingFileRenameOperations: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager

Wie Sie Test-PendingReboot verwenden

Wenn das Cmdlet Test-PendingReboot auf dem lokalen System läuft, gibt es standardmäßig zwei Eigenschaften zurück: den Computernamen und IsRebootPending.

Cmdlet Test-PendingReboot
Abbildung 1: Folgendermaßen verwenden Sie das Cmdlet Test-PendingReboot.

Beachten Sie, dass der Configuration Manager das System nicht verwaltet, weshalb das Cmdlet das CM SDK nicht in der Registry finden wird. Wenn Sie die Überprüfung durch das Cmdlet auslassen möchten, verwenden Sie den Parameter SkipConfigurationManagerClientCheck.

Das Cmdlet liefert Ihnen mehr Informationen als nur ausstehende Neustarts. Wenn Sie das Cmdlet mit dem Parameter -Detailed ausführen, gibt es den Status aller überprüften Bereiche in der Registry an.

Status aller überprüfte Bereiche der Registry
Abbildung 2: Verwenden Sie den Parameter -Detailed, um den Status aller überprüfte Bereiche der Registry zu sehen.

Wenn Sie beispielsweise Mozilla Firefox, Thunderbird und Acrobat DC installieren, gibt es in jedem dieser Programme einen ausstehenden Dateiumbenennungsvorgang, der einen Neustart erfordert. Die Eigenschaft PendingFileRenameOperationsValue kann mehrere Werte haben, die Sie einsehen, indem Sie Test-PendingReboot an ForEach-Object übergeben. Der nächste Neustart wird die Dateien umbenennen.

Eigenschaft PendingFileRenameOperationsValue
Abbildung 3: Um die Werte der Eigenschaft PendingFileRenameOperationsValue zu sehen, geben Sie Test-PendingReboot zu ForEach-Object ein.

Richtig nützlich wird diese Funktion, wenn Sie sie nicht nur auf dem lokalen Computer verwenden, sondern Desktops aus der Ferne überprüfen. Geben Sie dem Parameter -ComputerName an, der mit Invoke-WMIMethod eine Remote-Verbindung herstellt und die gleichen Registrierungswerte aus der Ferne überprüft.

Verwenden sie Get-ADComputer aus dem AD-Modul, um die abzufragenden Computer abzurufen.

Abruf der abzufragenden Computer
Abbildung 4: Mit Get-ADComputer aus dem Active-Directory-Modul rufen Sie die abzufragenden Computer ab.

Im obigen Befehl fragen Sie zunächst AD nach allen Systemen unter den Server der Organisationseinheit ab und fragen Sie diese dann mit Test-PendingReboot ab.

Erfahren Sie mehr über Serverbetriebssysteme