Biasanya, setelah pengguna menginstal driver, pembaruan (perangkat lunak atau sistem), atau perangkat lunak, atau membuat beberapa perubahan konfigurasi pada klien Windows atau mesin server, pengguna akan diminta untuk mem-boot ulang sistem. Dalam posting ini, kami akan memandu Anda melalui langkah-langkah tentang caranya periksa Pending Reboot di komputer Windows .
vmware workstation 12 jaringan yang dijembatani tidak berfungsi
Cara memeriksa Pending Reboot di komputer Windows
Setelah menyelesaikan banyak tugas OS Windows, terkadang komputer terpaksa memerlukan reboot. Saat masuk dan dalam sesi aktif, Anda akan diberi tahu bahwa reboot sedang menunggu atau diperlukan oleh beberapa kotak sembulan atau pemberitahuan — yang dapat Anda abaikan atau terima untuk memulai ulang Windows. Namun, dalam beberapa situasi di mana Anda tidak ingin atau tidak dapat segera mem-boot ulang mesin — misalnya, Anda memiliki beberapa pekerjaan yang belum selesai yang harus Anda selesaikan sebelum memulai ulang, atau Anda baru saja menginstal pembaruan di server produksi dan server tersebut dapat jangan langsung reboot.
Dalam skenario seperti ini, terutama yang menyangkut yang terakhir, Anda mungkin lupa tentang boot ulang dan di lain waktu menyadari bahwa beberapa server atau mesin klien perlu di-boot ulang tetapi Anda sekarang tidak dapat mengidentifikasi mesin yang mana — dalam situasi ini, Anda dapat memeriksa Pending Reboot di komputer Windows menggunakan a PowerShell naskah.
Sekarang, ketika reboot tertunda, Windows akan menambahkan beberapa nilai atau tanda registri untuk menunjukkannya di lokasi registri berikut dengan nilai dan ketentuan terkait seperti yang ditunjukkan pada tabel di bawah ini. Kunci Nilai Kondisi HKLM:\SOFTWARE\Microsoft\Pembaruan PerbaruiExeVolatile Nilai adalah apa pun selain 0 HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations nilai ada HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations2 nilai ada HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired ITU kunci ada HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending ITU Ada subkunci GUID apa pun HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting ITU kunci ada HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal nilai ada HKLM:\Software\Microsoft\Windows\CurrentVersion\Layanan Berbasis Komponen\RebootPending ITU kunci ada HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress ITU kunci ada HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending ITU kunci ada HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts ITU kunci ada HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon JoinDomain nilai ada HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon HindariSpnSet nilai ada HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName Nama komputer Nilai ComputerName di HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName berbeda
Karena kami telah mengidentifikasi jalur registri yang relevan, alih-alih menyisir registri secara manual karena Anda mungkin lupa untuk memeriksa satu jalur registri atau lupa mana yang harus diperiksa, Anda dapat buat dan jalankan skrip Check-PendingReboot.ps1 menggunakan kode di bawah ini untuk mengotomatiskan tugas untuk memeriksa semua kunci registri pada tabel di atas.
bfsvc.dll
[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 dapat menyediakan server sebanyak yang Anda inginkan melalui Nama komputer parameter dalam skrip yang akan kembali BENAR atau PALSU beserta nama servernya. Anda dapat menjalankan skrip yang mirip dengan yang berikut dan pastikan Remoting PowerShell diatur dan tersedia di server Anda.
PS51> .\Test-PendingReboot.ps1 -Server SRV1,SRV2,SRV3,etc
Membaca : Cara menjadwalkan skrip PowerShell di Penjadwal Tugas
Dengan menggunakan skrip PowerShell, Anda dapat menanyakan satu atau semua komputer di domain atau memberikan nama server secara manual untuk menentukan mesin yang menunggu booting ulang. Setelah diidentifikasi, Anda dapat segera mem-boot ulang mesin atau membuat daftar untuk mem-boot ulang nanti.
Sekarang baca : Cara Restart komputer Windows dari jarak jauh menggunakan PowerShell
kartu grafis apa yang saya miliki
Apa artinya reboot Windows tertunda?
Umumnya, permintaan booting ulang yang tertunda terjadi saat program atau penginstalan membuat perubahan pada file, kunci registri, layanan, atau pengaturan sistem operasi yang berpotensi meninggalkan sistem dalam keadaan sementara. Jika Anda mendapatkan Reboot tertunda telah terdeteksi pemberitahuan, itu hanya menunjukkan bahwa pembaruan tertunda pada mesin dan reboot harus dilakukan sebelum pembaruan tambahan apa pun dapat diinstal.
Membaca :
- Cara Menonaktifkan atau Mengaktifkan Notifikasi Mulai Ulang Pembaruan
- Pembaruan Windows Menunggu penginstalan atau pengunduhan, Inisialisasi, dll
Bagaimana cara memeriksa reboot yang tertunda di registri?
Anda dapat melakukannya dengan mencari Windows Registry Untuk RebootDiperlukan kunci. Pada tabel di atas dalam posting ini, kami telah mengidentifikasi lokasi registri yang relevan untuk kunci registri reboot yang tertunda. Jika Anda ingin menampilkan pemberitahuan saat PC Anda memerlukan restart untuk menyelesaikan penginstalan pembaruan Windows, klik Awal > Pengaturan > Pembaruan & keamanan > Pembaruan Windows > Opsi Lanjutan . Alihkan tombol ke aktif atau nonaktif untuk Tampilkan pemberitahuan saat PC Anda memerlukan restart untuk menyelesaikan pembaruan pilihan.
Baca juga : Ada perbaikan sistem yang tertunda yang membutuhkan reboot untuk menyelesaikannya .