Powershell Script: Bilgisayarı Yeniden Başlatan Script

PowerShell ile Bilgisayarı Zamanlayarak Yeniden Başlatma Scripti

Bu yazıda, Windows işletim sisteminde PowerShell kullanarak bilgisayarınızı belirli bir süre sonra otomatik olarak yeniden başlatmanızı sağlayan pratik bir scripti ele alacağız.
Script, yeniden başlatmayı geciktirmenize ve açık uygulamaları zorla kapatıp kapatmama konusunda kontrol sahibi olmanıza olanak tanır.

Sistem yöneticileri, helpdesk ekipleri veya kendi bilgisayarında bakım/yenileme işlemleri yapan kullanıcılar için bu script, özellikle uzaktan yönetim ve planlı restart senaryolarında oldukça kullanışlıdır.

Script Ne Yapar?

Bu PowerShell scripti, Windows’un yerleşik shutdown.exe komutunu kullanarak:

  • Bilgisayarı yeniden başlatma işlemini başlatır.
  • Yeniden başlatmayı belirli bir saniye geciktirmenizi sağlar ($DelaySeconds parametresi).
  • İsteğe bağlı olarak açık olan uygulamaları zorla kapatabilir ($Force parametresi).
  • Kullanıcıya, kaç saniye sonra yeniden başlatma yapılacağına dair açıklayıcı bir mesaj gösterir.
  • Herhangi bir hata durumunda, hata mesajını PowerShell konsoluna yazar.

Yani özetle, bu script belirlediğiniz süre sonunda bilgisayarınızı güvenli ve kontrollü bir şekilde yeniden başlatmanızı sağlar.

Özellikler ve Gereksinimler

Temel Özellikler

  • Gecikmeli Yeniden Başlatma:
    $DelaySeconds parametresi ile bilgisayarın kaç saniye sonra yeniden başlatılacağını belirleyebilirsiniz.
    Varsayılan değer 60 saniyedir.
  • Zorla Kapatma Seçeneği:
    $Force parametresi bir [switch] tipindedir. Kullanıldığında, açık olan uygulamalar uyarı vermeden zorla kapatılır.
  • Kullanıcıya Gösterilen Mesaj:
    Kullanıcıya, sistemin ne zaman yeniden başlatılacağı ve zorla kapatma olup olmayacağı hakkında bilgi veren açıklayıcı bir mesaj gösterilir.
  • Hata Yönetimi:
    try { ... } catch { ... } bloğu ile komut çalıştırılamazsa,
    “Yeniden başlatma işlemi başlatılamadı” başlıklı bir hata PowerShell konsoluna yazılır.
  • Windows Yerleşik Komut Kullanımı:
    Script, shutdown.exe aracını kullanır. Bu araç Windows ile birlikte gelir, ek kurulum gerektirmez.

Sistem Gereksinimleri

  • İşletim Sistemi: Windows (shutdown.exe komutunu destekleyen sürümler).
  • PowerShell: PowerShell 5.x veya üstü (genellikle modern Windows sürümleriyle yüklü gelir).
  • Yetkiler: Bilgisayarı yeniden başlatma yetkisine sahip bir kullanıcı hesabı (genellikle yerel yönetici veya yetkili kullanıcı).
  • Betik Çalıştırma İzni: Gerekirse Set-ExecutionPolicy ile script çalıştırma politikasının ayarlanmış olması.

Kullanım ve Önemli Notlar

Script Nasıl Kullanılır?

1. Script dosyasını oluşturun:

  • Not Defteri veya tercih ettiğiniz bir kod editörünü açın.
  • Verilen script kodunu kopyalayıp yapıştırın.
  • Dosyayı örneğin restart-computer.ps1 adıyla kaydedin.

2. PowerShell’i yönetici olarak açın (önerilir):

  • Başlat menüsünde “PowerShell” arayın.
  • “Yönetici olarak çalıştır” seçeneğini kullanın.

3. Script’in bulunduğu klasöre gidin:

  • cd komutunu kullanarak script dosyanızın olduğu dizine geçin.

4. Script’i parametrelerle birlikte çalıştırın:

  • Varsayılan ayarlarla (60 saniye sonra, zorla kapatma olmadan):
    .\restart-computer.ps1
  • 120 saniye (2 dakika) sonra yeniden başlatmak için:
    .\restart-computer.ps1 -DelaySeconds 120
  • 30 saniye sonra, açık uygulamaları zorla kapatarak yeniden başlatmak için:
    .\restart-computer.ps1 -DelaySeconds 30 -Force

Parametrelerin Detaylı Açıklaması

  • -DelaySeconds (varsayılan: 60)
    Yeniden başlatma işleminin kaç saniye sonra başlatılacağını belirler.
    Örneğin -DelaySeconds 300 derseniz, bilgisayar 5 dakika sonra yeniden başlar.
  • -Force (isteğe bağlı anahtar)
    Bu parametre kullanıldığında, açık olan tüm uygulamalar uyarı vermeden kapatılır.
    -Force eklemezseniz, sistem normal kapatma sürecini uygular ve bazı uygulamalar yeniden başlatmayı erteleyebilir.

Önemli Notlar ve Dikkat Edilmesi Gerekenler

  • Kaydedilmemiş Çalışmalar:
    Özellikle -Force parametresini kullanıyorsanız, kullanıcılara mutlaka çalışmalarını kaydetmeleri için önceden bilgi verin.
    Zorla kapatma, kaydedilmemiş verilerin kaybına yol açabilir.
  • Uzaktan Kullanım:
    Script, uzaktaki bir makinede PowerShell Remoting veya yönetim araçları ile de tetiklenebilir.
    Ancak bu durumda bağlantının kesileceğini ve oturumun kapanacağını unutmayın.
  • Zamanlama Stratejisi:
    $DelaySeconds değerini, kullanıcıların işlerini toparlamalarına yetecek kadar yüksek bir süre olarak belirlemek genellikle en iyi yaklaşımdır
    (örneğin 300 veya 600 saniye).
  • İptal Seçeneği:
    Script çalıştırıldıktan sonra yeniden başlatmayı iptal etmek isterseniz,
    ayrı bir komutla shutdown /a (abort) komutunu kullanabilirsiniz.
    Bu komutu da yine PowerShell veya Komut İstemi üzerinden çalıştırabilirsiniz.
  • Günlük ve Kayıtlar:
    Yeniden başlatma olayları, Windows Olay Günlüğü’nde (Event Viewer) “System” logları altında yer alır.
    Sorun yaşandığında bu logları inceleyerek sebebi analiz edebilirsiniz.
  • Kurumsal Ortamlar:
    Domain ortamlarında, bu script Group Policy, SCCM, Intune vb. araçlarla entegre edilerek daha geniş kapsamlı dağıtımlar için de kullanılabilir.

Script Kodu

Aşağıda, detaylarını anlattığımız PowerShell scriptinin tam kodunu görebilirsiniz.
Bu kodu bir .ps1 dosyasına kaydederek doğrudan kullanabilirsiniz.

param(
    [int]$DelaySeconds = 60,
    [switch]$Force
)

try {
    $message = "Bilgisayar $DelaySeconds saniye içinde yeniden başlatılacaktır."
    if ($Force) {
        $message += " Açık uygulamalar zorla kapatılacaktır."
    }

    shutdown.exe /r /t $DelaySeconds /c "$message" /d p:4:1 @(
        if ($Force) { '/f' } else { $null }
    ) | Out-Null
}
catch {
    Write-Error "Yeniden başlatma işlemi başlatılamadı: $_"
}

Powershell Scripti İndir