"Enter"a basıp içeriğe geçin

Powershell Pending Reboot

Kurumunuz içerisinde merkezi bir yönetim aracı olmadığını düşünerek, sunucular ve clientlar içerisinde restart ihtiyacı olan makinelerin zorla restart edilmesi için ihtiyaç duyduğum gereksinimi sonucu aşağıdaki powershell scripti ile işlemlerimi tamamladım.

Task scheduler ile sunucu ve clientlar üzerinde aşağıdaki scriptin çalıştırılmasını sağlayalım. Script, sistem üzerinde regedit değerlerinden kontrol ederek; restart ihtiyacı var ise makineyi zorunlu olarak restart edilmesini sağlamakta. Eğer yok ise herhangi bir işlem yapmadan scriptten çıkış yapmaktadır.

function Test-PendingReboot {
    if (Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -EA Ignore) { return $true }
    if (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -EA Ignore) { return $true }
    if (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA Ignore) { return $true }
    try { 
        $util = [wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities"
        $status = $util.DetermineIfRebootPending()
        if (($status -ne $null) -and $status.RebootPending) {
            return $true
        }
    }
    catch { }

    return $false
}

$needrestart = Test-PendingReboot

if ( $needrestart -eq $True ) {

   Restart-Computer -force


}
Bir cevap yazın

E-posta hesabınız yayımlanmayacak.