Bagaimana untuk menyemak Pending Reboot pada komputer Windows

Bagaimana Untuk Menyemak Pending Reboot Pada Komputer Windows



Biasanya, selepas pengguna memasang pemacu, kemas kini (perisian atau sistem) atau perisian, atau membuat beberapa perubahan konfigurasi pada klien atau mesin pelayan Windows, pengguna akan digesa untuk but semula sistem. Dalam siaran ini, kami akan membimbing anda melalui langkah-langkah bagaimana untuk semak Butang Semula Menunggu pada komputer Windows .



  Bagaimana untuk menyemak Pending Reboot pada komputer Windows





Bagaimana untuk menyemak Pending Reboot pada komputer Windows

Apabila menyelesaikan banyak tugas OS Windows, kadangkala komputer terpaksa memerlukan but semula. Semasa log masuk dan dalam sesi aktif, anda akan dimaklumkan bahawa but semula belum selesai atau diperlukan oleh beberapa kotak pop timbul atau pemberitahuan — yang boleh anda tolak atau terima untuk memulakan semula Windows. Tetapi, dalam beberapa situasi di mana anda tidak mahu atau tidak boleh but semula mesin dengan segera — contohnya, anda mempunyai beberapa kerja yang belum selesai yang perlu anda selesaikan sebelum anda memulakan semula, atau anda baru sahaja memasang kemas kini pada pelayan pengeluaran dan pelayan itu boleh jangan dibut semula dengan segera.





desktop whatsapp tidak berfungsi

Dalam senario seperti ini, terutamanya kerana ia melibatkan yang terakhir, anda mungkin terlupa tentang but semula dan kemudian menyedari bahawa sesetengah pelayan atau mesin pelanggan perlu dibut semula tetapi anda kini tidak dapat mengenal pasti mesin yang mana — dalam situasi ini, anda boleh menyemak untuk Pending Reboot pada komputer Windows menggunakan a PowerShell skrip.



Sekarang, apabila but semula belum selesai, Windows akan menambah beberapa nilai atau bendera pendaftaran untuk menunjukkannya di lokasi pendaftaran berikut dengan nilai dan syarat yang berkaitan seperti yang ditunjukkan dalam jadual di bawah.

kunci Nilai keadaan
HKLM:\SOFTWARE\Microsoft\Updates UpdateExeVolatile Nilai adalah apa-apa selain daripada 0
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations nilai wujud
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations2 nilai wujud
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired ITU kunci wujud
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending ITU Sebarang subkunci GUID wujud
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting ITU kunci wujud
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal nilai wujud
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending ITU kunci wujud
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress ITU kunci wujud
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending ITU kunci wujud
HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts ITU kunci wujud
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon SertaiDomain nilai wujud
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon AvoidSpnSet nilai wujud
HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName Nama Komputer Nilai ComputerName dalam HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName adalah berbeza

Memandangkan kami telah mengenal pasti laluan pendaftaran yang berkaitan, bukannya menyikat pendaftaran secara manual kerana anda mungkin terlupa untuk menyemak satu laluan pendaftaran atau lupa yang mana yang hendak diperiksa, anda boleh cipta dan jalankan skrip Check-PendingReboot.ps1 menggunakan kod di bawah untuk mengautomasikan tugas untuk menyemak semua kunci pendaftaran dalam jadual di atas.

  Buat dan jalankan skrip 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
}
}
}

Anda boleh menyediakan seberapa banyak pelayan yang anda mahu melalui Nama Komputer parameter dalam skrip yang akan kembali betul atau Salah bersama dengan nama pelayan. Anda boleh melaksanakan skrip yang serupa dengan yang berikut dan pastikan Pengalihan PowerShell disediakan dan tersedia pada pelayan anda.

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

Baca : Bagaimana untuk menjadualkan skrip PowerShell dalam Penjadual Tugas

Dengan menggunakan skrip PowerShell, anda boleh menanyakan satu atau semua komputer dalam domain atau memberikan nama pelayan secara manual untuk menentukan mesin yang menunggu but semula. Setelah dikenal pasti, anda boleh but semula mesin dengan segera atau buat senarai untuk but semula kemudian.

Sekarang baca : Bagaimana untuk Mulakan Semula komputer Windows dari Jauh menggunakan PowerShell

Apakah maksud but semula Windows belum selesai?

Secara amnya, permintaan but semula yang belum selesai berlaku apabila program atau pemasangan membuat perubahan pada fail, kunci pendaftaran, perkhidmatan atau tetapan sistem pengendalian yang berpotensi meninggalkan sistem dalam keadaan sementara. Dalam kes anda mendapat But semula belum selesai telah dikesan pemberitahuan, ia hanya menunjukkan bahawa kemas kini belum selesai pada mesin dan but semula mesti dilakukan sebelum sebarang kemas kini tambahan boleh dipasang.

Baca :

  • Cara Melumpuhkan atau Mendayakan Pemberitahuan Mulakan Semula Kemas Kini
  • Kemas Kini Windows Menunggu pemasangan atau muat turun, Memulakan, dsb

Bagaimana untuk menyemak but semula yang belum selesai dalam pendaftaran?

Anda boleh melakukan ini dengan mencari Windows Registry untuk But semula Diperlukan kunci. Dalam jadual di atas dalam siaran ini, kami telah mengenal pasti lokasi pendaftaran yang berkaitan untuk kunci pendaftaran but semula yang belum selesai. Jika anda ingin menunjukkan pemberitahuan apabila PC anda memerlukan mulakan semula untuk melengkapkan pemasangan kemas kini Windows, klik Mulakan > tetapan > Kemas kini & keselamatan > Kemas Kini Windows > Pilihan Lanjutan . Togol butang ke hidup atau matikan untuk Tunjukkan pemberitahuan apabila PC anda memerlukan mulakan semula untuk menyelesaikan kemas kini pilihan.

Baca juga : Terdapat pembaikan sistem belum selesai yang memerlukan but semula untuk diselesaikan .

Jawatan Popular