PowerShell 101: Dinamik Scriptler Üzerine

Mustafa Dikyar
4 min readAug 23, 2024

--

PowerShell, Microsoft tarafından sistem yönetimi ve otomasyonu kolaylaştırmak için geliştirilen, .NET Framework üzerinde çalışan güçlü bir shell ve script dilidir. Özellikle sistem yöneticileri ve geliştiriciler tarafından tercih edilen etkili bir araçtır.

PowerShell Nedir?

PowerShell, sistem yönetimi görevlerini otomatikleştirmek için kullanılan bir dil ve shell ortamıdır. PowerShell komutları (cmdlet), nesneler ile çalışır ve bu nesneler komutlar arasında aktarılabilir.

Geleneksel komut satırlarının aksine, PowerShell’deki çıktılar metin yerine .NET object olarak gelir.

Bu, bir komutun çıktısının doğrudan başka bir komuta girdi olarak kullanılabileceği anlamına gelir ve bu özelliğe pipelining denir.

PowerShell ile Ne Yapılabilir?

PowerShell, sistem yönetiminden dosya yönetimine, kullanıcı hesaplarının yönetiminden ağ yapılandırmalarına kadar pek çok farklı işlem için kullanılabilir. PowerShell ile yapabileceklerinizden bazı örnekler sunmak gerekirse:

  • Sistem Yönetimi: CPU, bellek kullanımı, disk durumu gibi sistem metriklerini izleme ve raporlama.
  • Dosya ve Klasör Yönetimi: Dosya yedekleme, toplu dosya işlemleri gibi görevleri otomatikleştirme.
  • Kullanıcı Yönetimi: Active Directory ya da yerel sistem kullanıcı hesaplarını yönetme, toplu kullanıcı oluşturma, parola sıfırlama gibi işlemleri kolaylaştırma.
  • Ağ Yönetimi: Ağ yapılandırmalarını otomatikleştirme, ağ durumu ve bağlantıları izleme.

PowerShell Script’leri ile Dinamik İş Akışları

PowerShell script’leri, iş akışlarını otomatikleştirmenin en etkili yollarından biridir. Bir PowerShell script’i, bir dizi komut ve işlem içerir ve tekrarlanabilir bir işlevsellik sağlar. Örneğin, belirli bir komutu birden fazla kez çalıştırmak, belirli dosyaları işlemek ya da bir sistemi belirli bir duruma getirmek için script’ler kullanılabilir.

Aşağıda, PowerShell kullanarak dinamik parametreler ile çalışan bir script’in nasıl yazılacağına odaklanalım.

Bu script, kullanıcıdan girdi alarak rastgele bir parola oluşturur. PowerShell’in temel işleyişini anlamak için iyi bir başlangıç olabileceğini düşünüyorum.

1- Parametrelerle Dinamik Girdi Alma

PowerShell script’leri, kullanıcıdan girdi almak için param yapısını kullanır. Bu parametreler, script'in çalıştırılması sırasında kullanıcının belirli girdiler sağlamasına olanak tanır ve script'in dinamik olarak çalışmasını sağlar.

Örneğin, bizim script’imizde kullanıcıdan parola uzunluğu ve kullanılacak karakter türleri gibi bilgileri alıyoruz.

param (
[switch]$help, # -help parametresi, yardım mesajını göstermek için
[int]$l = 16, # -l (length) parametresi, parola uzunluğunu belirler.
[string]$o = "a" # -o (options) parametresi, kullanılacak karakter türlerini belirtir.
)
  • -l (length) parametresi: Kullanıcının oluşturmak istediği parolanın uzunluğunu belirler. Varsayılan olarak bu değer 16'dır.
  • -o (options) parametresi: Kullanıcının parolada hangi karakter türlerini kullanacağını seçmesini sağlar. Varsayılan olarak tüm karakter türlerini içeren 'a' seçeneği kullanılır.

Yardım mesajlarını görmek için ise -help parametresini kullanacağız.

2- Yardım Mesajları ve Kullanıcı Bilgilendirmesi (Help)

Script’lerin genellikle kullanıcı dostu olmasını bekleriz. Hatalı girişler ya da belirsizlik durumlarında, kullanıcıya script’in nasıl çalıştırılacağını ve hangi seçeneklerin mevcut olduğunu açıklayan yardım mesajları ile geri bildirim vermeliyiz. Hadi kodu inceleyelim:

function Show-Help {
Write-Host "Usage:"
Write-Host "./genpass.ps1 -l <password length> -o <character types>"
Write-Host "Options:"
Write-Host " l : Lowercase letters"
Write-Host " u : Uppercase letters"
Write-Host " d : Digits"
Write-Host " s : Special characters"
Write-Host " a : All character types"
Write-Host "Example: ./genpass.ps1 -l 12 -o 'lds'"
}

3- Hata Yönetimi ve Veri Doğrulama

Herhangi bir script’te olduğu gibi, PowerShell script’lerinde de hata yönetimi çok önemlidir. Kullanıcı tarafından yanlış ya da eksik veri girildiğinde, script’in bu duruma karşı önlem almasını bekleriz.

if ($l -lt 1) {
Write-Host "Error: Password length cannot be less than 1."
Show-Help
return
}

Bu kontrol, parola uzunluğunun 1'den küçük olması durumunda, script çalışmayı durdurur ve kullanıcıyı yardım ekranına yönlendirir.

4- Dinamik Parola Oluşturma

PowerShell script’leri, kullanıcının belirlediği girdilere dayalı olarak dinamik işlemler gerçekleştirebildiğini konuştuk.

Aşağıdaki örnekte, promtlar özelinde ilgili karakter setinden rastgele bir parola oluşturulmaktadır.

$password = -join (1..$l | ForEach-Object { $selectedChars[(Get-Random -Minimum 0 -Maximum $selectedChars.Length)] })

Bu satır, belirlenen karakter setinden rastgele karakterler seçerek bir parola oluşturur. PowerShell’in Get-Random cmdlet’i, rastgele seçim yapmak için kullanılır.

PowerShell Script’lerinin Çalıştırılması

Bir PowerShell script’ini çalıştırmak için, script dosyasını .ps1 uzantısıyla kaydettikten sonra komut satırından uygun parametrelerle çağırabilmeliyiz. Aşağıda bir örnek verilmiştir:

.\genpass.ps1 -l 12 -o lds

Bu komut, 12 karakter uzunluğunda ve küçük harfler, rakamlar ve özel karakterlerden oluşan bir parola üretir.

.\genpass.ps1 -l 8 -o ds

Bu komut ise 12 karakter uzunluğunda, rakamlar ve özel karakterlerden oluşan bir parola üretir.

Kullanıcı tarafından girilen parametreler dinamik olarak işlenir ve çıktılar bu girdilere göre üretilir.

Gayet keyifli bir içerik olduğunu düşünüyorum. Umarım sizlere de fayda sağlamıştır.

Kaynaklar

--

--