Kako v računalniku z operacijskim sistemom Windows preveriti čakajoči ponovni zagon

Kako V Racunalniku Z Operacijskim Sistemom Windows Preveriti Cakajoci Ponovni Zagon



Običajno, ko uporabnik namesti gonilnik, posodobitev (programske ali sistemske) ali programsko opremo ali naredi nekaj sprememb konfiguracije na odjemalskem ali strežniškem računalniku Windows, bo uporabnik pozvan, naj znova zažene sistem. V tej objavi vas bomo vodili skozi korake, kako preverite Pending Reboot v računalniku z operacijskim sistemom Windows .



  Kako v računalniku z operacijskim sistemom Windows preveriti čakajoči ponovni zagon





Kako v računalniku z operacijskim sistemom Windows preveriti čakajoči na ponovni zagon

Po zaključku številnih nalog operacijskega sistema Windows je včasih računalnik prisiljen znova zagnati. Medtem ko ste prijavljeni in ste v aktivni seji, boste v pojavnem oknu ali obvestilu obveščeni, da je ponovni zagon v teku ali da je potreben – kar lahko opustite ali sprejmete, da znova zaženete Windows. Toda v nekaterih situacijah, ko ne želite ali ne morete takoj znova zagnati računalnika - na primer imate nekaj nedokončanega dela, ki ga morate dokončati, preden znova zaženete, ali pa ste pravkar namestili posodobitve na produkcijski strežnik in ta strežnik lahko ne smete takoj znova zagnati.





V takšnih scenarijih, zlasti kar zadeva slednje, lahko pozabite na ponovni zagon in pozneje ugotovite, da je treba nekatere strežnike ali odjemalske računalnike znova zagnati, vendar zdaj ne morete ugotoviti, kateri od strojev - v tej situaciji, lahko preverite Pending Reboot v računalniku z operacijskim sistemom Windows z uporabo a PowerShell scenarij.



Ko je ponovni zagon v teku, bo Windows dodal nekaj vrednosti ali zastavic registra, ki to označujejo, na naslednji lokaciji registra s povezanimi vrednostmi in pogoji, kot je prikazano v spodnji tabeli.

Ključ Vrednost Pogoj
HKLM:\PROGRAMSKA OPREMA\Microsoft\Updates UpdateExeVolatile Vrednost je karkoli drugega kot 0
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations vrednost obstaja
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations2 vrednost obstaja
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired TO ključ obstaja
HKLM:\PROGRAMSKA OPREMA\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending TO Vsi podključi GUID obstajajo
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting TO ključ obstaja
HKLM:\PROGRAMSKA OPREMA\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal vrednost obstaja
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\BootPending TO ključ obstaja
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress TO ključ obstaja
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending TO ključ obstaja
HKLM:\PROGRAMSKA OPREMA\Microsoft\ServerManager\CurrentRebootAttempts TO ključ obstaja
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon JoinDomain vrednost obstaja
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon Izogibajte seSpnSet vrednost obstaja
HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName Ime računalnika Vrednost ComputerName v HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName je drugačna

Ker smo identificirali ustrezne registrske poti, lahko namesto ročnega brskanja po registru, ker lahko pozabite preveriti eno registrsko pot ali preprosto pozabite, katere želite preveriti. ustvariti in zagnati skript Check-PendingReboot.ps1 z uporabo spodnje kode za avtomatizacijo opravila preverjanja vseh registrskih ključev v zgornji tabeli.

  Ustvarite in zaženite skript PowerShell



[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
}
}
}

Prek Ime računalnika parameter v skriptu, ki bo vrnil Prav oz False skupaj z imenom strežnika. Izvedete lahko skript, podoben naslednjemu, in se prepričate PowerShell Remoting je nastavljen in na voljo na vaših strežnikih.

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

Preberi : Kako načrtovati skript PowerShell v razporejevalniku opravil

Z uporabo skripta PowerShell lahko poizvedujete po enem ali vseh računalnikih v domeni ali ročno podate imena strežnikov, da določite stroje, ki čakajo na ponovni zagon. Ko jih prepoznate, lahko takoj znova zaženete stroje ali naredite seznam za ponovni zagon pozneje.

Zdaj pa preberi : Kako na daljavo znova zagnati računalnik z operacijskim sistemom Windows z lupino PowerShell

Kaj pomeni, da čaka vnovičen zagon sistema Windows?

Na splošno se čakajoča zahteva za ponovni zagon pojavi, ko program ali namestitev spremeni datoteke, registrske ključe, storitve ali nastavitve operacijskega sistema, kar potencialno pusti sistem v prehodnem stanju. V primeru, da dobite Zaznan je bil ponovni zagon v teku obvestilo, preprosto nakazuje, da so na računalniku čakajoče posodobitve in da je treba izvesti ponovni zagon, preden je mogoče namestiti dodatne posodobitve.

Preberi :

  • Kako onemogočiti ali omogočiti obvestilo o ponovnem zagonu posodobitve
  • Windows Update čaka na namestitev ali prenos, inicializacija itd

Kako preveriti čakajoče ponovne zagone v registru?

To lahko storite tako, da iskanje po registru Windows za Zahtevan ponovni zagon ključ. V zgornji tabeli v tej objavi smo identificirali ustrezno lokacijo registra za registrske ključe v čakanju na ponovni zagon. Če želite prikazati obvestilo, ko vaš računalnik zahteva ponovni zagon za dokončanje namestitve posodobitve sistema Windows, kliknite Začetek > nastavitve > Posodobitev in varnost > Windows posodobitve > Napredne možnosti . Vklopite ali izklopite gumb za Pokažite obvestilo, ko vaš računalnik zahteva ponovni zagon za dokončanje posodabljanja možnost.

Preberite tudi : V teku je popravilo sistema, ki zahteva ponovni zagon .

Priljubljene Objave