So prüfen Sie auf einem Windows-Computer, ob ein Neustart aussteht

So Prufen Sie Auf Einem Windows Computer Ob Ein Neustart Aussteht



Nachdem ein Benutzer einen Treiber, ein Update (Software oder System) oder eine Software installiert oder einige Konfigurationsänderungen auf einem Windows-Client- oder Servercomputer vorgenommen hat, wird der Benutzer normalerweise aufgefordert, das System neu zu starten. In diesem Beitrag führen wir Sie durch die einzelnen Schritte Suchen Sie auf einem Windows-Computer nach ausstehendem Neustart .



Instagram Live Windows 10

  So prüfen Sie auf einem Windows-Computer, ob ein Neustart aussteht





So prüfen Sie auf einem Windows-Computer, ob ein Neustart aussteht

Nach Abschluss vieler Aufgaben des Windows-Betriebssystems muss der Computer manchmal neu gestartet werden. Während Sie angemeldet sind und sich in einer aktiven Sitzung befinden, werden Sie durch ein Popup-Fenster oder eine Benachrichtigung benachrichtigt, dass ein Neustart aussteht oder erforderlich ist – die Sie entweder ablehnen oder akzeptieren können, um Windows neu zu starten. Aber in manchen Situationen, in denen Sie den Computer nicht sofort neu starten möchten oder können, müssen Sie beispielsweise vor dem Neustart noch einige Arbeiten erledigen, oder Sie haben gerade Updates auf einem Produktionsserver installiert, und dieser Server kann dies tun nicht sofort neu gestartet werden.





In Szenarien wie diesem, insbesondere wenn es um letzteres geht, vergessen Sie möglicherweise den Neustart und stellen zu einem späteren Zeitpunkt fest, dass einige Server oder Client-Computer neu gestartet werden müssen, aber Sie können jetzt nicht erkennen, welche der Computer – in dieser Situation, Sie können auf einem Windows-Computer nach einem ausstehenden Neustart suchen, indem Sie a verwenden Power Shell Skript.



Wenn nun ein Neustart ansteht, fügt Windows einige Registrierungswerte oder Flags hinzu, um dies an der folgenden Registrierungsposition mit den zugehörigen Werten und Bedingungen anzuzeigen, wie in der folgenden Tabelle gezeigt.

Taste Wert Zustand
HKLM:\SOFTWARE\Microsoft\Updates UpdateExeVolatile Wert ist alles andere als 0
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager Ausstehende Dateiumbenennungsoperationen Wert besteht
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager Ausstehende Dateiumbenennungsoperationen2 Wert besteht
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired DAS Schlüssel existiert
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending DAS Alle GUID-Unterschlüssel sind vorhanden
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting DAS Schlüssel existiert
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal Wert besteht
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending DAS Schlüssel existiert
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress DAS Schlüssel existiert
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending DAS Schlüssel existiert
HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts DAS Schlüssel existiert
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon JoinDomain Wert besteht
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon SpnSet vermeiden Wert besteht
HKLM:\SYSTEM\CurrentControlSet\Control\Computername\ActiveComputerName Computername Wert ComputerName in HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName ist anders

Da wir die relevanten Registrierungspfade identifiziert haben, können Sie dies tun, anstatt die Registrierung manuell zu durchsuchen, weil Sie möglicherweise vergessen haben, einen Registrierungspfad zu überprüfen, oder einfach vergessen, welche zu überprüfen sind erstellen und ausführen ein Check-PendingReboot.ps1-Skript, das den folgenden Code verwendet, um die Aufgabe zum Überprüfen aller Registrierungsschlüssel in der obigen Tabelle zu automatisieren.

  PowerShell-Skript erstellen und ausführen



[CmdletBinding()]
param(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string[]]$ComputerName,
[Parameter()]
[ValidateNotNullOrEmpty()]
[pscredential]$Credential
)
$ErrorActionPreference = 'Stop'
$scriptBlock = {
$VerbosePreference = $using:VerbosePreference
function Test-RegistryKey {
[OutputType('bool')]
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Key
)
$ErrorActionPreference = 'Stop'
if (Get-Item -Path $Key -ErrorAction Ignore) {
$true
}
}
function Test-RegistryValue {
[OutputType('bool')]
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Key,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Value
)
$ErrorActionPreference = 'Stop'
if (Get-ItemProperty -Path $Key -Name $Value -ErrorAction Ignore) {
$true
}
}
function Test-RegistryValueNotNull {
[OutputType('bool')]
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Key,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Value
)
$ErrorActionPreference = 'Stop'
if (($regVal = Get-ItemProperty -Path $Key -Name $Value -ErrorAction Ignore) -and $regVal.($Value)) {
$true
}
}
# Added "test-path" to each test that did not leverage a custom function from above since
# an exception is thrown when Get-ItemProperty or Get-ChildItem are passed a nonexistant key path
$tests = @(
{ Test-RegistryKey -Key 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending' }
{ Test-RegistryKey -Key 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress' }
{ Test-RegistryKey -Key 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired' }
{ Test-RegistryKey -Key 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending' }
{ Test-RegistryKey -Key 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting' }
{ Test-RegistryValueNotNull -Key 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' -Value 'PendingFileRenameOperations' }
{ Test-RegistryValueNotNull -Key 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' -Value 'PendingFileRenameOperations2' }
{ 
# Added test to check first if key exists, using "ErrorAction ignore" will incorrectly return $true
'HKLM:\SOFTWARE\Microsoft\Updates' | Where-Object { test-path $_ -PathType Container } | ForEach-Object { 
(Get-ItemProperty -Path $_ -Name 'UpdateExeVolatile' | Select-Object -ExpandProperty UpdateExeVolatile) -ne 0 
}
}
{ Test-RegistryValue -Key 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce' -Value 'DVDRebootSignal' }
{ Test-RegistryKey -Key 'HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttemps' }
{ Test-RegistryValue -Key 'HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon' -Value 'JoinDomain' }
{ Test-RegistryValue -Key 'HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon' -Value 'AvoidSpnSet' }
{
# Added test to check first if keys exists, if not each group will return $Null
# May need to evaluate what it means if one or both of these keys do not exist
( 'HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName' | Where-Object { test-path $_ } | %{ (Get-ItemProperty -Path $_ ).ComputerName } ) -ne 
( 'HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName' | Where-Object { Test-Path $_ } | %{ (Get-ItemProperty -Path $_ ).ComputerName } )
}
{
# Added test to check first if key exists
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending' | Where-Object { 
(Test-Path $_) -and (Get-ChildItem -Path $_) } | ForEach-Object { $true }
}
)
foreach ($test in $tests) {
Write-Verbose "Running scriptblock: [$($test.ToString())]"
if (& $test) {
$true
break
}
}
}
foreach ($computer in $ComputerName) {
try {
$connParams = @{
'ComputerName' = $computer
}
if ($PSBoundParameters.ContainsKey('Credential')) {
$connParams.Credential = $Credential
}
$output = @{
ComputerName = $computer
IsPendingReboot = $false
}
$psRemotingSession = New-PSSession @connParams
if (-not ($output.IsPendingReboot = Invoke-Command -Session $psRemotingSession -ScriptBlock $scriptBlock)) {
$output.IsPendingReboot = $false
}
[pscustomobject]$output
} catch {
Write-Error -Message $_.Exception.Message
} finally {
if (Get-Variable -Name 'psRemotingSession' -ErrorAction Ignore) {
$psRemotingSession | Remove-PSSession
}
}
}

Über die können Sie beliebig viele Server bereitstellen Computername Parameter im Skript, der zurückgegeben wird WAHR oder FALSCH zusammen mit dem Servernamen. Sie können das Skript ähnlich wie folgt ausführen und sicherstellen PowerShell-Remoting eingerichtet und auf Ihren Servern verfügbar ist.

PS51> .\Test-PendingReboot.ps1 -Server SRV1,SRV2,SRV3,etc

Lesen : So planen Sie das PowerShell-Skript im Taskplaner

Mithilfe des PowerShell-Skripts können Sie einen oder alle Computer in der Domäne abfragen oder die Servernamen manuell angeben, um die Computer zu ermitteln, die auf einen Neustart warten. Nach der Identifizierung können Sie die Computer sofort neu starten oder eine Liste für den späteren Neustart erstellen.

Jetzt lesen : So starten Sie einen Windows-Computer mit PowerShell aus der Ferne neu

Was bedeutet es, dass ein Windows-Neustart aussteht?

Im Allgemeinen tritt eine ausstehende Neustartanforderung auf, wenn ein Programm oder eine Installation Änderungen an Dateien, Registrierungsschlüsseln, Diensten oder Betriebssystemeinstellungen vornimmt und das System möglicherweise in einem vorübergehenden Zustand belässt. In dem Fall bekommen Sie die Ein ausstehender Neustart wurde erkannt Benachrichtigung, zeigt sie lediglich an, dass Updates auf dem Computer anstehen und ein Neustart durchgeführt werden muss, bevor weitere Updates installiert werden können.

Lesen :

  • So deaktivieren oder aktivieren Sie die Update-Neustartbenachrichtigung
  • Windows Update Ausstehende Installation oder Download, Initialisierung usw

Wie überprüfe ich ausstehende Neustarts in der Registrierung?

Sie können dies tun, indem Sie Durchsuchen der Windows-Registrierung für die Neustart erforderlich Taste. In der Tabelle oben in diesem Beitrag haben wir den relevanten Registrierungsspeicherort für ausstehende Neustart-Registrierungsschlüssel identifiziert. Wenn Sie eine Benachrichtigung anzeigen möchten, wenn Ihr PC neu gestartet werden muss, um die Installation eines Windows-Updates abzuschließen, klicken Sie auf Start > Einstellungen > Update & Sicherheit > Windows-Updates > Erweiterte Optionen . Schalten Sie die Schaltfläche für ein oder aus Zeigen Sie eine Benachrichtigung an, wenn Ihr PC neu gestartet werden muss, um die Aktualisierung abzuschließen Möglichkeit.

Lesen Sie auch : Es steht eine Systemreparatur an, für deren Abschluss ein Neustart erforderlich ist .

Beliebte Beiträge