Paano suriin ang Nakabinbing Pag-reboot sa Windows computer

Paano Suriin Ang Nakabinbing Pag Reboot Sa Windows Computer



Karaniwan, pagkatapos mag-install ang user ng driver, update (software o system), o software, o gumawa ng ilang pagbabago sa configuration sa Windows client o server machine, ipo-prompt ang user na i-reboot ang system. Sa post na ito, gagabayan ka namin sa mga hakbang kung paano tingnan ang Nakabinbing Pag-reboot sa isang Windows computer .



kung paano i-undo ang laging bukas sa windows 10

  Paano suriin ang Nakabinbing Pag-reboot sa Windows computer





Paano suriin ang Nakabinbing Pag-reboot sa isang Windows computer

Sa pagkumpleto ng maraming mga gawain sa Windows OS, kung minsan ang computer ay napipilitang mangailangan ng reboot. Habang naka-log in at nasa aktibong session, aabisuhan ka na ang isang reboot ay nakabinbin o kinakailangan ng ilang popup box o notification — na maaari mong i-dismiss o tanggapin upang i-restart ang Windows. Ngunit, sa ilang mga sitwasyon kung saan hindi mo gusto o hindi agad ma-reboot ang makina — halimbawa, mayroon kang ilang hindi natapos na gawain na kailangan mong tapusin bago ka mag-restart, o nag-install ka lang ng mga update sa isang production server at ang server na iyon ay maaaring 'wag agad i-reboot.





Sa mga sitwasyong tulad nito, lalo na kung ito ay may kinalaman sa huli, maaari mong makalimutan ang tungkol sa pag-reboot at sa ibang pagkakataon ay mapagtanto na ang ilang mga server o client machine ay kailangang i-reboot ngunit hindi mo na matukoy kung alin sa mga makina — sa sitwasyong ito, maaari mong masuri ang Nakabinbing Pag-reboot sa Windows computer gamit ang a Power shell iskrip.



Ngayon, kapag ang isang pag-reboot ay nakabinbin, ang Windows ay magdaragdag ng ilang mga halaga ng registry o mga flag upang ipahiwatig ito sa sumusunod na lokasyon ng pagpapatala kasama ang mga nauugnay na halaga at kundisyon tulad ng ipinapakita sa talahanayan sa ibaba.

Susi Halaga Kundisyon
HKLM:\SOFTWARE\Microsoft\Updates UpdateExeVolatile Ang halaga ay anuman maliban sa 0
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager NakabinbingFileRenameOperations umiiral ang halaga
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager NakabinbingFileRenameOperations2 umiiral ang halaga
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired NA may susi
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending NA Ang anumang GUID subkey ay umiiral
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting NA may susi
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal umiiral ang halaga
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending NA may susi
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress NA may susi
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending NA may susi
HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts NA may susi
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon JoinDomain umiiral ang halaga
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon Iwasan angSpnSet umiiral ang halaga
HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName ComputerName Halaga ng ComputerName sa HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName ay iba

Dahil natukoy namin ang mga nauugnay na landas sa pagpapatala, sa halip na manu-manong magsuklay sa pagpapatala dahil maaari mong makalimutang suriin ang isang landas ng pagpapatala o kalimutan lamang kung alin ang susuriin, maaari mong lumikha at tumakbo isang Check-PendingReboot.ps1 script gamit ang code sa ibaba upang i-automate ang gawain upang suriin ang lahat ng registry key sa talahanayan sa itaas.

  Gumawa at magpatakbo ng PowerShell script



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

Maaari kang magbigay ng maraming mga server hangga't gusto mo sa pamamagitan ng ComputerName parameter sa script na babalik totoo o Mali kasama ang pangalan ng server. Maaari mong isagawa ang script na katulad ng sumusunod at siguraduhin PowerShell Remoting ay naka-set up at magagamit sa iyong mga server.

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

Basahin : Paano mag-iskedyul ng PowerShell script sa Task Scheduler

Sa pamamagitan ng paggamit ng PowerShell script, maaari kang mag-query ng isa o lahat ng mga computer sa domain o manu-manong ibigay ang mga pangalan ng server upang matukoy ang mga machine na nakabinbin ang pag-reboot. Kapag natukoy na, maaari mong i-reboot kaagad ang mga makina o gumawa ng listahan upang mag-reboot sa ibang pagkakataon.

Ngayon basahin : Paano Malayuang I-restart ang Windows computer gamit ang PowerShell

Ano ang ibig sabihin na nakabinbin ang pag-reboot ng Windows?

Sa pangkalahatan, ang isang nakabinbing kahilingan sa pag-reboot ay nangyayari kapag ang isang program o pag-install ay gumawa ng pagbabago sa mga file, registry key, serbisyo, o mga setting ng operating system na posibleng umalis sa system sa isang pansamantalang estado. Kung sakaling makuha mo ang May nakitang nakabinbing pag-reboot abiso, ipinapahiwatig lamang nito na ang mga pag-update ay nakabinbin sa makina at ang isang pag-reboot ay dapat gawin bago ma-install ang anumang karagdagang mga update.

Basahin :

  • Paano I-disable o I-enable ang Update Restart Notification
  • Windows Update Nakabinbing pag-install o pag-download, Pagsisimula, atbp

Paano suriin ang mga nakabinbing pag-reboot sa pagpapatala?

Magagawa mo ito sa pamamagitan ng naghahanap sa Windows Registry para sa RebootRequired susi. Sa talahanayan sa itaas sa post na ito, natukoy namin ang nauugnay na lokasyon ng pagpapatala para sa mga nakabinbing reboot na registry key. Kung gusto mong magpakita ng notification kapag ang iyong PC ay nangangailangan ng pag-restart upang makumpleto ang pag-install ng Windows update, i-click Magsimula > Mga setting > Update at seguridad > Mga Update sa Windows > Mga Advanced na Opsyon . I-toggle ang button sa on o off para sa Magpakita ng notification kapag ang iyong PC ay nangangailangan ng pag-restart upang matapos ang pag-update opsyon.

regdiff

Basahin din : May nakabinbing pag-aayos ng system na nangangailangan ng pag-reboot upang makumpleto .

Patok Na Mga Post