Cum se verifică repornirea în așteptare pe computerul Windows

Cum Se Verifica Repornirea In Asteptare Pe Computerul Windows



De obicei, după ce un utilizator instalează un driver, o actualizare (software sau sistem) sau software sau face unele modificări de configurare pe un client sau pe un server Windows, utilizatorului i se va solicita să repornească sistemul. În această postare, vă vom ghida prin pașii cum să faceți verificați Pending Reboot pe un computer Windows .



  Cum se verifică repornirea în așteptare pe computerul Windows





Cum să verificați Pending Reboot pe un computer Windows

La finalizarea multor sarcini ale sistemului de operare Windows, uneori computerul este forțat să necesite o repornire. În timp ce sunteți autentificat și într-o sesiune activă, veți fi notificat că o repornire este în așteptare sau este necesară printr-o casetă pop-up sau o notificare - pe care o puteți închide sau accepta pentru a reporni Windows. Dar, în unele situații în care nu doriți sau nu puteți reporni imediat mașina - de exemplu, aveți o lucrare neterminată pe care trebuie să o finalizați înainte de a reporni sau tocmai ați instalat actualizări pe un server de producție și acel server poate nu fi repornit imediat.





În scenarii ca acesta, mai ales în ceea ce privește cel din urmă, este posibil să uitați de repornire și, mai târziu, să realizați că unele servere sau mașini client trebuie repornite, dar acum nu puteți identifica care dintre mașini - în această situație, puteți să verificați Pending Reboot pe computerul Windows folosind un PowerShell scenariu.



Acum, când o repornire este în așteptare, Windows va adăuga câteva valori de registry sau semnalizatoare pentru a indica acest lucru în următoarea locație de registry cu valorile și condițiile asociate, așa cum se arată în tabelul de mai jos.

Cheie Valoare Condiție
HKLM:\SOFTWARE\Microsoft\Actualizări UpdateExeVolatil Valoarea este altceva decât 0
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations valoare există
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations2 valoare există
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired ACEA cheia există
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending ACEA Există orice subcheie GUID
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting ACEA cheia există
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal valoare există
HKLM:\Software\Microsoft\Windows\CurrentVersion\Servicii bazate pe componente\RebootPending ACEA cheia există
HKLM:\Software\Microsoft\Windows\CurrentVersion\Servicii bazate pe componente\RebootInProgress ACEA cheia există
HKLM:\Software\Microsoft\Windows\CurrentVersion\Servicii bazate pe componente\PackagesPending ACEA cheia există
HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts ACEA cheia există
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon JoinDomain valoare există
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon EvitațiSpnSet valoare există
HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName Numele calculatorului Valoarea ComputerName în HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName este diferită

Deoarece am identificat căile de registry relevante, în loc să parcurgeți manual registrul, deoarece este posibil să uitați să verificați o cale de registry sau pur și simplu să uitați pe care să le verificați, puteți creați și rulați un script Check-PendingReboot.ps1 folosind codul de mai jos pentru a automatiza sarcina de verificare a tuturor cheilor de registry din tabelul de mai sus.

  Creați și rulați scriptul PowerShell



interfața de rețea akamai
[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
}
}
}

Puteți furniza câte servere doriți prin intermediul Numele calculatorului parametrul din script care va reveni Adevărat sau Fals împreună cu numele serverului. Puteți executa scriptul similar cu următorul și asigurați-vă PowerShell Remoting este configurat și disponibil pe serverele dvs.

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

Citit : Cum să programați scriptul PowerShell în Task Scheduler

Folosind scriptul PowerShell, puteți interoga unul sau toate computerele din domeniu sau puteți furniza manual numele de server pentru a determina mașinile în așteptarea repornirii. Odată identificat, puteți reporni mașinile imediat sau puteți face o listă pentru a reporni mai târziu.

Acum citește : Cum să reporniți de la distanță computerul Windows folosind PowerShell

Ce înseamnă că o repornire Windows este în așteptare?

În general, o solicitare de repornire în așteptare apare atunci când un program sau o instalare face o modificare a fișierelor, cheilor de registry, serviciilor sau setărilor sistemului de operare, lăsând sistemul într-o stare tranzitorie. În cazul în care obțineți A fost detectată o repornire în așteptare notificare, indică pur și simplu că actualizările sunt în așteptare pe mașină și trebuie efectuată o repornire înainte de a putea fi instalate actualizări suplimentare.

Citit :

  • Cum să dezactivați sau să activați notificarea de repornire a actualizării
  • Windows Update În așteptare instalare sau descărcare, inițializare etc

Cum se verifică repornirile în așteptare în registru?

Puteți face acest lucru prin căutând în Registrul Windows pentru RebootRequired cheie. În tabelul de mai sus din această postare, am identificat locația de registru relevantă pentru cheile de registru de repornire în așteptare. Dacă doriți să afișați o notificare când computerul necesită repornire pentru a finaliza instalarea actualizării Windows, faceți clic pe start > Setări > Actualizare și securitate > Actualizări Windows > Opțiuni avansate . Comutați butonul la pornit sau dezactivat pentru Afișați o notificare când computerul necesită repornire pentru a finaliza actualizarea opțiune.

Citește și : Există o reparație a sistemului în așteptare care necesită o repornire pentru a se finaliza .

Posturi Populare