Obično, nakon što korisnik instalira upravljački program, ažuriranje (softvera ili sustava) ili softver, ili napravi neke promjene konfiguracije na Windows klijentskom ili poslužiteljskom računalu, od korisnika će biti zatraženo da ponovno pokrene sustav. U ovom postu ćemo vas provesti kroz korake kako provjerite Pending Reboot na Windows računalu .
Kako provjeriti ponovno pokretanje na čekanju na Windows računalu
Po dovršetku mnogih zadataka OS-a Windows, ponekad se računalo mora ponovno pokrenuti. Dok ste prijavljeni iu aktivnoj sesiji, bit ćete obaviješteni da je ponovno pokretanje na čekanju ili da je potrebno putem nekog skočnog okvira ili obavijesti — koju možete ili odbaciti ili prihvatiti da ponovno pokrenete Windows. No, u nekim situacijama u kojima ne želite ili ne možete odmah ponovno pokrenuti stroj — na primjer, imate neki nedovršeni posao koji trebate dovršiti prije ponovnog pokretanja ili ste upravo instalirali ažuriranja na produkcijski poslužitelj i taj poslužitelj može nemojte se odmah ponovno pokrenuti.
U ovakvim scenarijima, posebno kada se radi o potonjem, možete zaboraviti na ponovno pokretanje i kasnije shvatiti da se neki poslužitelji ili klijentski strojevi moraju ponovno pokrenuti, ali sada ne možete identificirati koji od strojeva — u ovoj situaciji, možete provjeriti Pending Reboot na Windows računalu pomoću a PowerShell skripta.
webp u gif pretvarač
Sada, kada je ponovno pokretanje na čekanju, Windows će dodati neke vrijednosti registra ili zastavice da to naznače na sljedećoj lokaciji registra s pridruženim vrijednostima i uvjetima kao što je prikazano u donjoj tablici. Ključ Vrijednost Stanje HKLM:\SOFTVER\Microsoft\Ažuriranja UpdateExeVolatile Vrijednost je bilo što drugo osim 0 HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations vrijednost postoji HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager Operacije preimenovanja datoteke na čekanju2 vrijednost postoji HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired DA ključ postoji HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending DA Postoje svi GUID podključevi HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting DA ključ postoji HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal vrijednost postoji HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending DA ključ postoji HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress DA ključ postoji HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending DA ključ postoji HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts DA ključ postoji HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon Pridružite se domeni vrijednost postoji HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon Izbjegavajte SpnSet vrijednost postoji HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName Naziv računala Vrijednost ComputerName u HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName je drugačija
Kako smo identificirali relevantne staze registra, umjesto da ručno pročešljavate registar jer možete zaboraviti provjeriti jednu stazu registra ili samo zaboraviti koje provjeriti, možete stvoriti i pokrenuti skriptu Check-PendingReboot.ps1 pomoću donjeg koda za automatizaciju zadatka provjere svih ključeva registra u gornjoj tablici.
[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 } } }
Možete osigurati onoliko poslužitelja koliko želite putem Naziv računala parametar u skripti koji će se vratiti Pravi ili lažno zajedno s imenom poslužitelja. Možete izvršiti skriptu sličnu sljedećoj i uvjeriti se PowerShell Remoting je postavljen i dostupan na vašim poslužiteljima.
PS51> .\Test-PendingReboot.ps1 -Server SRV1,SRV2,SRV3,etc
Čitati : Kako zakazati skriptu PowerShell u Planeru zadataka
Korištenjem skripte PowerShell možete postaviti upit jednom ili svim računalima u domeni ili ručno dati imena poslužitelja kako biste odredili strojeve koji čekaju ponovno pokretanje. Nakon što ih identificirate, možete odmah ponovno pokrenuti strojeve ili napraviti popis za ponovno pokretanje kasnije.
Sad čitaj : Kako daljinski ponovno pokrenuti Windows računalo pomoću PowerShell-a
Što znači da čeka ponovno pokretanje sustava Windows?
Općenito, zahtjev za ponovnim pokretanjem na čekanju javlja se kada program ili instalacija napravi promjenu u datotekama, ključevima registra, uslugama ili postavkama operativnog sustava što potencijalno ostavlja sustav u prolaznom stanju. U slučaju da dobijete Otkriveno je ponovno pokretanje na čekanju obavijest, ona jednostavno označava da su ažuriranja na čekanju na računalu i da se mora izvršiti ponovno pokretanje prije nego što se mogu instalirati dodatna ažuriranja.
Čitati :
- Kako onemogućiti ili omogućiti obavijest o ponovnom pokretanju ažuriranja
- Windows Update Instalacija ili preuzimanje na čekanju, inicijalizacija, itd
Kako provjeriti ponovna pokretanja na čekanju u registru?
To možete učiniti tako da pretražujući Windows Registry za Potrebno ponovno pokretanje ključ. U gornjoj tablici u ovom postu identificirali smo relevantnu lokaciju registra za ključeve registra koji čekaju ponovno pokretanje. Ako želite prikazati obavijest kada vaše računalo zahtijeva ponovno pokretanje za dovršetak instalacije Windows ažuriranja, kliknite Početak > postavke > Ažuriranje i sigurnost > Windows ažuriranja > Napredne opcije . Uključite ili isključite gumb za Pokažite obavijest kada vaše računalo zahtijeva ponovno pokretanje za dovršetak ažuriranja opcija.
Također pročitajte : Na čekanju je popravak sustava koji zahtijeva ponovno pokretanje da bi se dovršio .