Togan © 2025. Tüm hakları saklıdır.

  1. Anasayfa
  2. Bilgi
  3. PowerShell Otomasyon: Günlük Görevleri Otomatikleştirme Rehberi

PowerShell Otomasyon: Günlük Görevleri Otomatikleştirme Rehberi

bugratogan bugratogan -

- 20 dk okuma süresi
49 0

PowerShell Otomasyon: Günlük Görevleri Otomatikleştirme Rehberi

Günümüz BT dünyasında, sistem yönetimi ve otomasyon işlemleri iş verimliliğini artırmak, hata payını azaltmak ve zaman tasarrufu sağlamak açısından büyük önem taşıyor. Özellikle Windows tabanlı sistemlerde, PowerShell güçlü bir araç olarak öne çıkıyor. Bu makalede, PowerShell’in temel komutlarından başlayarak günlük görevleri nasıl otomatikleştirebileceğimizi adım adım inceleyeceğiz. PowerShell Otomasyon sayesinde, tekrarlanan işleri güvenilir ve hızlı bir şekilde gerçekleştirebilir, sistem yönetiminde verimliliği artırabilirsiniz.

PowerShell’e Genel Bakış

PowerShell, Microsoft tarafından geliştirilen, sistem yönetimini kolaylaştıran bir komut satırı kabuğu ve script dilidir. Windows işletim sistemlerinde yerleşik olarak bulunan bu araç, Unix benzeri kabuklara kıyasla daha gelişmiş özellikler sunar.

PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi
PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi

PowerShell’in Avantajları

  • Nesne Tabanlı Yapı: PowerShell, geleneksel metin tabanlı kabuklardan farklı olarak nesnelerle çalışır. Bu özellik, karmaşık verilerin daha rahat işlenmesini sağlar.
  • Zengin Komut Seti: Get-Process, Get-Service, Set-Item gibi pek çok yerleşik komut (cmdlet) içerir.
  • Otomasyon ve Script Yazma: Günlük yönetim görevlerinin otomatikleştirilmesi için ideal bir araçtır. İşte bu noktada PowerShell Otomasyon kavramı öne çıkar.
  • Genişletilebilirlik: Kullanıcılar, kendi cmdlet’lerini, fonksiyonlarını ve modüllerini oluşturarak PowerShell’i ihtiyaçlarına göre özelleştirebilir.

PowerShell Temelleri: Komutlar ve Söz Dizimi

PowerShell’de script yazmaya başlamadan önce temel komutlar ve sözdizimini öğrenmek çok önemlidir. Aşağıda, PowerShell’in en sık kullanılan bazı komutlarını ve bu komutların PowerShell Otomasyon süreçlerindeki rolünü inceleyeceğiz.

Temel Komutlar ve Cmdlet’ler

  • Get-Command: Sistemdeki tüm komutları listelemek için kullanılır.
    powershell
    Get-Command
  • Get-Help: Belirli bir komut hakkında detaylı bilgi almanızı sağlar.
    powershell
    Get-Help Get-Process -Detailed
  • Get-Process: Çalışan işlemleri listelemek için idealdir.
    powershell
    Get-Process
  • Get-Service: Sistem servislerinin durumunu görmek için kullanılır.
    powershell
    Get-Service

Bu temel komutlar, PowerShell Otomasyon süreçlerinin yapı taşlarını oluşturur. Komutları öğrenmek, script yazımında ilerlemenin ilk adımıdır.

Söz Dizimi, Değişkenler ve Operatörler

PowerShell’de değişkenler dolar işareti ($) ile tanımlanır. Örneğin:

powershell
$dosyaYolu = "C:\Logs\log.txt"

Bu örnekte, $dosyaYolu adlı değişken bir dosya yolunu temsil eder. Script’lerinizde değişken kullanımı, kodun dinamik ve esnek olmasını sağlar.

PowerShell’de matematiksel ve mantıksal operatörler de bulunur:

  • Aritmetik Operatörler: +, -, *, /
  • Karşılaştırma Operatörleri: -eq (eşit), -ne (eşit değil), -gt (büyüktür) gibi.

Örneğin:

powershell
if ($sayi -gt 10) {
Write-Output "Sayı 10'dan büyük"
}

Bu tür kontrol yapıları, PowerShell Otomasyon script’lerinizde koşulların değerlendirilmesinde sıklıkla kullanılır.

İlginizi çekebilir;  En Güncel Bilgisayar Donanım Terimleri ve Anlamları: Detaylı Bir Kılavuz

Script Yazımına Giriş

PowerShell script’leri, .ps1 uzantılı dosyalar olarak kaydedilir ve içinde birden fazla komut, döngü, koşul ve fonksiyon barındırabilir. Aşağıda, basit bir disk kullanım raporu oluşturma script örneği bulacaksın:

powershell
# Basit Disk Kullanım Raporu Oluşturma Script'i

# Hedef dosya yolu
$logDosyasi = "C:\Logs\DiskKullanimi.txt"

# Disk kullanım bilgilerini al
$diskBilgileri = Get-PSDrive -PSProvider 'FileSystem'

# Log dosyasını oluştur veya temizle
Set-Content -Path $logDosyasi -Value "Disk Kullanım Raporu - $(Get-Date)"
Add-Content -Path $logDosyasi -Value "-----------------------------"

# Her bir sürücü için bilgileri ekle
foreach ($sürücü in $diskBilgileri) {
$kullanilanAlan = [Math]::Round($sürücü.Used / 1GB, 2)
$toplamAlan = [Math]::Round($sürücü.Free / 1GB + $kullanilanAlan, 2)
Add-Content -Path $logDosyasi -Value "Sürücü: $($sürücü.Name) | Kullanılan Alan: $kullanilanAlan GB | Toplam Alan: $toplamAlan GB"
}

Bu script, disk kullanım bilgilerini toplayıp bir log dosyasına yazıyor. Böylece, PowerShell Otomasyon kullanarak günlük sistem raporlaması yapmanın pratik yollarından birini görmüş oluyorsun.

PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi
PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi

Döngüler, Koşullar ve Fonksiyonlar

Otomasyon script’lerinde tekrar eden işlemleri kontrol altına almak için döngüler, koşullar ve fonksiyonlar önemli bir rol oynar.

Döngüler

PowerShell’de yaygın olarak kullanılan döngüler arasında foreach, for ve while bulunur. Örneğin:

powershell
$isimler = @("Ali", "Veli", "Ayşe", "Fatma")
foreach ($isim in $isimler) {
Write-Output "Merhaba $isim, bugün nasıl yardımcı olabilirim?"
}

Bu döngü, listedeki her ismi işleyerek çıktı verir. Bu tür yapılar, PowerShell Otomasyon senaryolarında dosya veya servis listeleriyle çalışırken oldukça kullanışlıdır.

Koşullar

Koşul ifadeleri (if-else) sayesinde belirli şartlar altında farklı işlemler gerçekleştirebilirsiniz:

powershell
$diskKapasitesi = 80
if ($diskKapasitesi -gt 75) {
Write-Output "Disk kapasitesi kritik seviyede, önlem alınmalı."
} else {
Write-Output "Disk kapasitesi normal."
}

Koşul ifadeleri, otomasyon script’lerinde hata durumlarını öngörmek ve yönetmek için hayati öneme sahiptir.

Fonksiyonlar

Kodun okunabilirliğini artırmak ve modüler hale getirmek için fonksiyonlar kullanılır. Örneğin:

powershell
function RaporOlustur {
param (
[string]$dosyaYolu
)
$diskBilgileri = Get-PSDrive -PSProvider 'FileSystem'
Set-Content -Path $dosyaYolu -Value "Disk Raporu - $(Get-Date)"
foreach ($sürücü in $diskBilgileri) {
$kullanilan = [Math]::Round($sürücü.Used / 1GB, 2)
$toplam = [Math]::Round(($sürücü.Used + $sürücü.Free) / 1GB, 2)
Add-Content -Path $dosyaYolu -Value "Sürücü: $($sürücü.Name) | Kullanılan: $kullanilan GB | Toplam: $toplam GB"
}
}
# Fonksiyonu çağırma
RaporOlustur -dosyaYolu "C:\Logs\DiskRapor.txt"

Bu örnek, fonksiyon kullanımını ve kodun modüler yapıda yazılmasını gösterir. Böylece, PowerShell Otomasyon projelerinde kodların bakımı ve yeniden kullanımı kolaylaşır.

Günlük Görevlerin Otomatikleştirilmesi: Pratik Senaryolar

PowerShell kullanarak otomasyonun gücünü günlük görevler üzerinde görmek mümkün. Aşağıda, PowerShell Otomasyon kapsamında otomatikleştirebileceğin bazı pratik senaryolara yer veriyoruz.

1. Dosya ve Dizin Yönetimi

Belirli dizinlerdeki dosyaların yedeğini almak, eski dosyaları silmek veya dosya adlarını toplu şekilde değiştirmek gibi işlemleri PowerShell ile kolayca yapabilirsin.

Örnek Senaryo: Belirli bir dizindeki dosyaların yedeğini alma

powershell
$kaynakDizin = "C:\Veriler"
$yedekDizin = "D:\Yedekler\$(Get-Date -Format yyyyMMdd)"
New-Item -ItemType Directory -Path $yedekDizin -Force
Copy-Item -Path "$kaynakDizin\*" -Destination $yedekDizin -Recurse
Write-Output "Yedek alma işlemi tamamlandı: $yedekDizin"

Bu örnekte, yedekleme işlemi tamamen otomatik hale getiriliyor. Böylece, PowerShell Otomasyon ile tekrarlayan yedekleme işlemleri sorunsuzca gerçekleştirilebiliyor.

PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi
PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi

2. Servis ve Süreç Yönetimi

Sistem servislerinin durumunu kontrol etmek, belirli servisleri yeniden başlatmak veya hatalı süreçleri otomatik olarak sonlandırmak da PowerShell Otomasyon kapsamındaki işlemler arasında yer alır.

Örnek Senaryo: Belirli bir servisin durumunu kontrol edip yeniden başlatma

powershell
$servisAdi = "Spooler"
$servis = Get-Service -Name $servisAdi
if ($servis.Status -ne "Running") {
Write-Output "$servisAdi servisi çalışmıyor, yeniden başlatılıyor..."
Restart-Service -Name $servisAdi
Write-Output "$servisAdi servisi başarıyla yeniden başlatıldı."
} else {
Write-Output "$servisAdi servisi zaten çalışıyor."
}

Bu senaryoda, servis durumunu otomatik olarak kontrol edip gerektiğinde müdahale ederek sistemin stabilitesini sağlıyoruz.

3. Raporlama ve Log Yönetimi

Sistem performansı, disk kullanımı, bellek tüketimi gibi verileri periyodik olarak raporlayarak log dosyalarına kaydetmek, sistem yöneticileri için büyük kolaylık sağlar.

Örnek Senaryo: Sistem bilgilerini raporlama

powershell
$raporDosyasi = "C:\Logs\SistemRaporu.txt"
$cpuBilgisi = Get-WmiObject win32_processor | Select-Object Name, NumberOfCores, MaxClockSpeed
$ramBilgisi = Get-WmiObject win32_physicalmemory | Measure-Object -Property Capacity -Sum
Set-Content -Path $raporDosyasi -Value "Sistem Raporu - $(Get-Date)"
Add-Content -Path $raporDosyasi -Value "CPU Bilgisi:"
$cpuBilgisi | ForEach-Object {
Add-Content -Path $raporDosyasi -Value "İsim: $($_.Name), Çekirdek Sayısı: $($_.NumberOfCores), Maksimum Hız: $($_.MaxClockSpeed) MHz"
}
Add-Content -Path $raporDosyasi -Value "Toplam RAM: $([Math]::Round($ramBilgisi.Sum / 1GB, 2)) GB"
Write-Output "Rapor dosyası oluşturuldu: $raporDosyasi"

Bu örnek, düzenli rapor oluşturma sürecini otomatikleştirerek sistem durumunu anlık takip etme imkanı sunar.

4. Otomatik Güncelleme ve Yedekleme İşlemleri

Günlük yönetim görevlerinde otomatik güncelleme ve yedekleme işlemleri kritik öneme sahiptir. PowerShell script’leri ile bu işlemleri belirli zaman aralıklarında ya da sistemde meydana gelen değişikliklere göre çalıştırabilirsin.

Örnek Senaryo: Dosya yedekleme işlemini zamanlanmış görev olarak ekleme

Öncelikle, daha önce hazırladığımız yedekleme script’ini (örneğin, yedekle.ps1) oluşturduktan sonra Windows Görev Zamanlayıcısı ile bu script’i otomatik olarak çalıştırabilirsin:

powershell
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\yedekle.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 02:00AM
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "GünlükDosyaYedekleme" -Description "Günlük dosya yedekleme işlemini gerçekleştirir."

Bu örnek, dosya yedekleme işleminin her gün belirli bir saatte otomatik olarak yapılmasını sağlayarak PowerShell Otomasyon ile kritik verilerin korunmasını garanti altına alır.

İleri Düzey Konular ve Güvenlik

Otomasyon script’leri hazırlarken, güvenlik önlemlerini almak büyük önem taşır. Aşağıda, PowerShell Otomasyon projelerinde güvenliği artırmanın bazı yöntemleri yer almaktadır.

Script İmzalama

Script’lerin güvenliğini sağlamak için dijital imzalar kullanmak önemlidir. Bu sayede script’lerin yetkisiz kişilerce değiştirilmesi engellenir:

powershell
Set-AuthenticodeSignature -FilePath "C:\Scripts\yedekle.ps1" -Certificate (Get-Item Cert:\CurrentUser\My\<SertifikaThumbprint>)

Uzak Sistem Yönetimi

Büyük ağ yapılarında veya veri merkezlerinde, uzak sistemlerle çalışmak için PowerShell’in sunduğu imkanlardan faydalanabilirsin:

powershell
$sunucuListesi = @("Sunucu1", "Sunucu2", "Sunucu3")
foreach ($sunucu in $sunucuListesi) {
Invoke-Command -ComputerName $sunucu -ScriptBlock {
Get-Service -Name "Spooler"
}
}

Bu örnek, uzak sistemlerde belirli servislerin durumunu kontrol etme imkanı verir.

PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi
PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi

Hata Yönetimi ve Loglama

Script’ler çalışırken oluşabilecek hataları yakalamak ve log dosyalarına kaydetmek, otomasyon projelerinin güvenilirliğini artırır:

powershell
try {
Restart-Service -Name "Spooler" -ErrorAction Stop
Write-Output "Servis başarıyla yeniden başlatıldı."
} catch {
Write-Output "Hata oluştu: $_"
Add-Content -Path "C:\Logs\hata.log" -Value "Hata: $($_.Exception.Message) - $(Get-Date)"
} finally {
Write-Output "İşlem tamamlandı."
}

Bu yapı, PowerShell Otomasyon projelerinde oluşabilecek aksaklıkları minimuma indirir.

Uygulamalı Örnek: Disk Temizleme Otomasyonu

Bir diğer yaygın otomasyon senaryosu, gereksiz dosya ve geçici verilerin temizlenmesidir. Aşağıdaki örnekte, C:\Windows\Temp dizininde 7 günden eski dosyaların otomatik olarak silinmesi gösterilmektedir:

powershell
# Disk Temizleme Script'i
$geciciDizin = "C:\Windows\Temp"
$eskiDosyalar = Get-ChildItem -Path $geciciDizin -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) }

foreach ($dosya in $eskiDosyalar) {
try {
Remove-Item $dosya.FullName -Force -Recurse
Write-Output "Silindi: $($dosya.FullName)"
} catch {
Write-Output "Silinemedi: $($dosya.FullName) - Hata: $_"
}
}
Write-Output "Disk temizleme işlemi tamamlandı."

Bu script, sistemde yer açarak performansı artırmaya yardımcı olur.

Uygulamalı Örnek: Sistem İzleme ve Alarm Oluşturma

Sunucu veya bilgisayar performansını izlemek için CPU kullanımı gibi metrikleri takip eden ve belirli bir eşiğin üzerinde alarm veren bir script örneği:

powershell
$cpuEsiği = 80
$cpuKullanım = (Get-WmiObject -Class Win32_Processor | Measure-Object -Property LoadPercentage -Average).Average

if ($cpuKullanım -gt $cpuEsiği) {
Write-Output "Uyarı: CPU kullanımı $cpuEsiği%'nin üzerinde! Şu anki kullanım: $cpuKullanım%."
# İleri alarm sistemleri: e-posta, SMS vb. entegre edilebilir.
} else {
Write-Output "CPU kullanımı normal seviyede: $cpuKullanım%."
}

Bu örnek, PowerShell Otomasyon kapsamında sistem izleme çözümleri geliştirmenin pratik bir yolunu sunar.

Otomasyon Script’lerinin Bakımı ve Geliştirilmesi

Otomasyon projelerinde, script’lerin düzenli olarak gözden geçirilmesi ve güncellenmesi gerekir. İşte dikkat edilmesi gereken bazı noktalar:

  • Modüler Kod Yazımı: Script’leri fonksiyonlar ve modüller halinde yazmak, kodun okunabilirliğini ve sürdürülebilirliğini artırır.
  • Yorum Satırları: Kodun ne yaptığını açıklayan yorumlar eklemek, ileride yapılacak değişikliklerde işini kolaylaştırır.
  • Versiyon Kontrolü: Git gibi araçlarla script’lerin geçmiş değişikliklerini takip etmek.
  • Güvenlik Testleri: Yeni özellik eklenmeden önce script’lerin test edilerek güvenlik açıklarının minimuma indirilmesi.

Bu yaklaşımlar, PowerShell Otomasyon projelerinin uzun ömürlü ve güvenilir olmasını sağlar.

İleri Düzey İpuçları ve En İyi Uygulamalar

Otomasyon süreçlerini bir üst seviyeye taşımak isteyenler için bazı ileri düzey ipuçları:

  1. Loglama ve İzleme Araçları Entegrasyonu: Script’lerin merkezi loglama sistemleriyle entegre edilmesi.
  2. Parametrik Script’ler Yazma: Dosya yolları, eşik değerler veya zamanlamaların parametre haline getirilmesi.
  3. Remote Execution: Uzak sistemlerde Invoke-Command ve Enter-PSSession kullanımı.
  4. Script Performans Analizi: Yazdığın script’lerin performansını ölçmek ve darboğazları optimize etmek.
  5. Topluluk ve Kaynak Takibi: PowerShell ile ilgili güncel kaynakları ve forumları takip ederek yeni teknikler öğrenmek.

Bu ipuçları, PowerShell Otomasyon projelerinde verimliliği artırmanın yanı sıra, uzun vadede daha ölçeklenebilir ve güvenilir çözümler geliştirmene yardımcı olacaktır.

PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi
PowerShell Otomasyon Günlük Görevleri Otomatikleştirme Rehberi

Sonuç

Bu makalede, PowerShell kullanarak günlük görevleri otomatikleştirmenin temellerinden başlayıp, ileri düzey tekniklere kadar geniş bir perspektif sunduk. Temel komutlardan, döngüler, koşullar ve fonksiyonlar aracılığıyla basit raporlama, dosya ve dizin yönetimi, servis kontrolü, sistem izleme ve alarm oluşturma gibi pratik örnekleri ele aldık. PowerShell Otomasyon sayesinde, manuel olarak gerçekleştirdiğin tekrarlayan işlemleri otomatik hale getirerek hem zaman kazandırabilir hem de hata oranını minimize edebilirsin.

Özetle, PowerShell;

  • Nesne tabanlı yapısı
  • Zengin cmdlet kütüphanesi
  • Kolay script yazma imkanı
    gibi özellikleriyle otomasyon süreçlerinde vazgeçilmez bir araçtır. Günlük yönetim görevlerinden kritik sistem bakımına kadar pek çok senaryoda kullanabileceğin bu araç, BT profesyonellerine büyük kolaylık sağlar.

Unutma; otomasyon projelerinde kodun modülerliği, güvenlik önlemleri, hata yönetimi ve performans optimizasyonu gibi konulara dikkat etmek, uzun vadeli başarıya ulaşmanı sağlar. Yeni başlayanlardan ileri düzey kullanıcılara kadar, PowerShell’in sunduğu esneklik ile ihtiyaçlarına uygun çözümler üretebilirsin. Her yeni script ile hem bilgi birikimini artırır hem de sistem yönetimini daha sorunsuz hale getirirsin.

Günümüz teknolojisinin hızla evrildiği bu dönemde, PowerShell Otomasyon projelerine yatırım yaparak hem iş süreçlerini optimize edebilir hem de rekabet gücünü artırabilirsin. Sürekli güncellenen kaynakları takip etmek, topluluklardan destek almak ve yeni teknikleri öğrenmek, bu alanda başarılı olmanın anahtarlarındandır.

İyi okumalar, keyifli kodlamalar ve başarılı otomasyon projeleri dilerim!


Ek Kaynaklar:

İlgili Yazılar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir