Hoe computers met een herstart in afwachting te identificeren met behulp van PowerShell

Na het installeren van bepaalde patches of beveiligingsupdates op Windows is een herstart vaak nodig om die wijzigingen daadwerkelijk door te voeren. Als u die herstart steeds uitstelt of als automatisch herstarten is uitgeschakeld – met name op servers of in bedrijfsomgevingen via Groepsbeleid – kan uw computer vastlopen met geïnstalleerde updates die nog niet zijn toegepast. Deze status van een herstart kan veel problemen veroorzaken, zoals updates die eindeloos lijken te wachten of vreemde systeemverschijnselen. Het is daarom erg handig om te weten hoe u kunt achterhalen welke computers na updates daadwerkelijk op een herstart wachten. Vooral als u een groot aantal servers of werkstations beheert, kan het opsporen van deze computers die op een herstart wachten u veel tijd besparen.

In een recent geval gaf een Windows Server aan dat er updates waren geïnstalleerd, maar er had nog geen automatische herstart plaatsgevonden. Het statusvenster van de updates gaf ‘Herstart in afwachting’ aan, maar om de een of andere reden was klikken op ‘Herstarten’ niet voldoende. Daarom ben ik op zoek gegaan naar scripts en opdrachten om een ​​beter beeld te krijgen. Het bleek dat de PendingReboot-module van Microsoft uit de PowerShell Gallery kan aangeven of een systeem wacht op een herstart. Het is een beetje vreemd, maar het werkt prima, zelfs op externe machines waar PowerShell-remotebeheer is ingeschakeld.

Hoe controleer ik in Windows of een computer opnieuw moet worden opgestart?

Methode 1: Gebruik de PendingReboot PowerShell-module

Het installeren van deze module is eenvoudig en helpt enorm bij het verminderen van handmatige controles, met name in een netwerkomgeving. Voer hiervoor de volgende opdracht uit in een PowerShell-prompt met beheerdersrechten:

Install-Module -Name PendingReboot

Bij sommige configuraties moet je mogelijk eerst het uitvoeringsbeleid instellen, bijvoorbeeld Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. Geen probleem, maar wel even ter informatie. Na de installatie kun je snel controleren of een lokale machine opnieuw moet worden opgestart:

Test-PendingReboot

Deze opdracht geeft True of False terug. Als het True is, moet de machine opnieuw worden opgestart. Voor meer gedetailleerde informatie, voeg toe -Detailed:

Test-PendingReboot -Detailed

Het vertelt je precies wat de vertraging veroorzaakt: of het nu een Windows-update in behandeling is, onderhoud aan componenten of andere redenen. Meestal werkt dit ook voor externe machines, met een simpele opdracht Invoke-Command. Moet je een server op afstand controleren? Probeer dan:

Invoke-Command -ComputerName m-dc01 -ScriptBlock {Test-PendingReboot}

Let op: PowerShell-remotebeheer moet op de doelmachine zijn ingeschakeld en geconfigureerd om dit te laten werken.

Methode 2: Handmatig de registersleutels controleren

Als je PowerShell-modules wilt overslaan of er problemen mee hebt, is het raadplegen van het register een prima alternatief. Bepaalde registersleutels geven aan dat je een herstart nodig hebt:

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

Om dit te controleren, kunt u commando’s uitvoeren zoals:

Get-Item 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired' -ErrorAction SilentlyContinue

Als deze registervermelding bestaat, denkt Windows dat een herstart nog steeds nodig is. Geen wonder dat het je steeds blijft lastigvallen.

Hier is een handige PowerShell-functie die een aantal van deze registercontroles combineert — een soort alles-in-één oplossing voor de herstartstatus:

function Get-PendingReboot { param([string[]]$ComputerName = "localhost") foreach ($Computer in $ComputerName) { $HKLM = [Microsoft. Win32. RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computer) $CBS = $HKLM. OpenSubKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending') $WU = $HKLM. OpenSubKey('SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired') $SM = $HKLM. OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager') $Rename = $SM. GetValue('PendingFileRenameOperations') $Rename2 = $SM. GetValue('PendingFileRenameOperations2') [PSCustomObject]@{ Computer = $Computer RebootNeeded = [bool]($CBS -or $WU -or $Rename -or $Rename2) } } }

Op een van mijn netwerken hielp dit bij het opsporen van een heleboel machines met nog openstaande herstarts die anders over het hoofd gezien zouden worden. Let wel: toegang tot het externe register en remote toegang moeten ingeschakeld en goed werken om dit te laten functioneren.

En als Windows na mislukte update-installaties steeds om een ​​herstart vraagt, moet je die updates mogelijk handmatig annuleren of resetten om te voorkomen dat de computer steeds opnieuw opstart. Meestal helpt het om de cache te wissen of de betreffende registervermeldingen handmatig te verwijderen, maar dat is weer een ander verhaal.

Al met al maken deze methoden het een stuk makkelijker om bij te houden welke systemen een herstart nodig hebben, waardoor vreemde updateproblemen worden voorkomen en alles soepel blijft verlopen. Het bekende probleem van “updates geïnstalleerd maar geen herstart” is irritant, maar deze trucs zijn behoorlijk betrouwbaar als je ze eenmaal doorhebt.

Samenvatting

  • Installeer de PendingReboot PowerShell-module om de herstartstatus te controleren.
  • Gebruik commando’s zoals Test-PendingRebootvoor snelle gezondheidscontroles.
  • Controleer de registerinstellingen als modules geen optie zijn.
  • Gebruik PowerShell-remotebeheer (met Invoke-Command) om snel toegang te krijgen tot externe machines.

Samenvatting

Hopelijk maakt de kennis over het identificeren van herstarts het systeembeheer een stuk minder frustrerend. Deze technieken zijn erg handig voor een snelle controle op meerdere apparaten – soms gaat het er alleen maar om updates te vinden die niet helemaal zijn afgerond. We hopen dat dit je helpt om het updateproces te stroomlijnen!