Sorun Tanımı
Windows işletim sistemlerinde güvenlik yamaları, sürücü güncellemeleri veya yazılım kurulumları sonrasında sistemin değişiklikleri uygulaması için bir yeniden başlatma (reboot) işlemi gerekebilir. Ancak, son kullanıcılar genellikle bu uyarıları ertelemekte veya göz ardı etmektedir. Bir sistem yöneticisi olarak, ağınızdaki hangi bilgisayarların bekleyen bir yeniden başlatma durumunda olduğunu bilmek, yama yönetimi ve sistem kararlılığı açısından kritik öneme sahiptir.
Çözüm Yöntemi
Windows, bekleyen yeniden başlatma durumunu kayıt defterinde (Registry) belirli anahtarlar altında tutar. PowerShell kullanarak bu anahtarları yerel veya uzak bilgisayarlarda sorgulayabiliriz. En yaygın kullanılan yöntem, Component Based Servicing (CBS) ve Windows Update kayıt defteri anahtarlarını kontrol etmektir.
Adım Adım Uygulama
- PowerShell'i yönetici haklarıyla çalıştırın.
- Aşağıdaki betiği kullanarak yerel bilgisayarınızın yeniden başlatma gerektirip gerektirmediğini kontrol edin.
- Uzak bilgisayarlar için
Invoke-Commandkomutunu kullanarak bu sorguyu ağ genelinde çalıştırın.
$RestartNeeded = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending' -ErrorAction SilentlyContinue
if ($RestartNeeded) { Write-Host "Yeniden başlatma gerekiyor!" } else { Write-Host "Sistem güncel, yeniden başlatma gerekmiyor." }
Uyarı: Uzak bilgisayarlarda işlem yapabilmek için WinRM (Windows Remote Management) hizmetinin aktif olması ve gerekli izinlere sahip olmanız gerekmektedir.
Gelişmiş Sorgulama
Daha kapsamlı bir analiz için hem AutoUpdate hem de Component Based Servicing anahtarlarını kontrol eden bir fonksiyon kullanmak en sağlıklı yaklaşımdır. Aşağıdaki komut bloğu, sistemin yeniden başlatma durumunu daha detaylı bir şekilde raporlar:
function Test-PendingReboot {
$CBS = Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
$WU = Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'
if ($CBS -or $WU) { return $true } else { return $false }
}
if (Test-PendingReboot) { Write-Warning "Sistem yeniden başlatma bekliyor." }
Bu yöntem, özellikle büyük ölçekli kurumsal ağlarda, bakım pencerelerini planlamak ve güncellemelerin başarıyla tamamlandığından emin olmak için vazgeçilmez bir araçtır. Düzenli olarak bu kontrolleri bir otomasyon betiği ile çalıştırmak, sistem güvenliğini artıracaktır.



