So testen Sie das Pending Reboot-Modul von PowerShell

Wir erklären wie Sie mit einem PowerShell-Modul überprüfen, ob Computer im Netzwerk auf einen Neustart warten, um zu verhindern, dass es nach Änderungen zu Konflikten kommt.

Neustarts sind in Windows-Umgebungen regelmäßig notwendig und das PowerShell-Modul für ausstehende Neustarts (Pending Reboot-Modul) kann diesen Prozess vereinfachen.

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.

Erste Schritte mit dem Modul für ausstehende Neustarts

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 Development 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:

  • Der Wert RebootPending: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing
  • Der Wert RebootRequired:
    HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update
  • Der Wert PendingFileRenameOperations:
    HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager
  • So verwenden Sie Test-PendingReboot

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

Abbildung 1: So verwenden Sie das Cmdlet Test-PendingReboot.
Abbildung 1: So 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.

Abbildung 2: Der Parameter -Detailliert gibt den Status aller Bereiche der überprüften Registrierung an.
Abbildung 2: Der Parameter -Detailliert gibt den Status aller Bereiche der überprüften Registrierung an.

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.

Abbildung 3: Popen Sie Test-PendingReboot zu Foreach-Object, um die Werte der Eigenschaft PendingFileRenameOperationsValue anzuzeigen.
Abbildung 3: Popen Sie Test-PendingReboot zu Foreach-Object, um die Werte der Eigenschaft PendingFileRenameOperationsValue anzuzeigen.

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 den 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.

Abbildung 4: Verwenden Sie Get-ADComputer aus dem Active Directory-Modul, um die abzufragenden Computer abzurufen.
Abbildung 4: Verwenden Sie Get-ADComputer aus dem Active Directory-Modul, um die abzufragenden Computer abzurufen.

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

Erfahren Sie mehr über Serverbetriebssysteme

ComputerWeekly.de
Close