PowerShell, Microsoft tarafından geliştirilen bir görev otomasyonu ve yapılandırma yönetimi çerçevesidir. Bir komut satırı kabuğu ve ilişkili bir betik dili içerir. İlk olarak sistem yöneticilerine yönelik olarak tasarlanan PowerShell, görevleri otomatikleştirmek ve sistem yapılandırmalarını yönetmek için güçlü bir arayüz sunar; bu, betikler ve cmdlet'ler (hafif komutlar) kullanarak gerçekleştirilir. Yıllar içinde PowerShell, yeteneklerini artırmış ve önemli ölçüde evrim geçirmiştir; .NET çerçevesi ile entegrasyonuna vurgu yaparak PowerShell Core ile çapraz platform kullanımına olanak tanımıştır.
PowerShell, 2006 yılında "Monad" olarak ilk kez tanıtıldı ve esas olarak Windows'ta sistem yönetimini geliştirmek amacıyla oluşturuldu. Kullanıcılar ile temel sistem süreçleri arasında bir köprü kurarak komut satırı betiklerine odaklandı. Tasarımı, .NET çerçevesinin yetenekleri aracılığıyla nesne yönelimli programlamaya vurgu yaparak Unix kabuklarından etkilendi.
2012 yılında Windows Yönetim Çerçevesi (WMF) 3.0'ın piyasaya sürülmesiyle PowerShell daha sağlam hale geldi ve iş akışları ve modüller gibi özellikler tanıttı. 2016 yılında PowerShell Core'un (sürüm 6) çıkışı önemli bir dönüm noktasıydı; çünkü macOS ve Linux'ta çalışacak şekilde tasarlanmıştı ve Windows ekosisteminin ötesine geçerek erişimini genişletti.
Şu anda PowerShell, dünya genelinden geliştiricilerin katkılarına olanak tanıyan açık kaynak bir modelle geliştirilmeye devam ediyor. En son sürümler, sistem yönetimi için değil, farklı platformlarda daha geniş betik ve otomasyon görevleri için de geçerli olan gelişmiş işlevsellikler içermektedir. .NET ile olan ilişkisi daha da derinleşmiş, onu çeşitli ortamlardaki geliştiriciler için güçlü bir betik aracı haline getirmiştir.
PowerShell komutları, cmdlet olarak bilinir ve fiil-isim adlandırma kuralını takip eder.
Get-Process
PowerShell, bir cmdlet'in çıktısının başka bir cmdlet'e girdi olarak kullanılmasına olanak tanıyan boru hattını destekler.
Get-Process | Where-Object { $_.CPU -gt 100 }
PowerShell'deki değişkenler $
ile başlar ve geniş bir veri türü yelpazesini tutabilir.
$greeting = "Merhaba, Dünya!"
PowerShell, veri manipülasyonu için diziler ve hash tabloları yerel olarak destekler.
$array = @(1, 2, 3)
$hash = @{"anahtar" = "değer"}
PowerShell'de yeniden kullanılabilir fonksiyonlar tanımlayabilirsiniz.
function Greet {
param($name)
"Merhaba, $name!"
}
PowerShell'de hata yönetimi try/catch blokları kullanılarak yönetilebilir.
try {
Get-Process -Name "varolmayan"
} catch {
Write-Host "Bir hata oluştu: $_"
}
PowerShell betikleri .ps1
uzantısıyla kaydedilir ve doğrudan çalıştırılabilir.
# myscript.ps1
Write-Host "PowerShell betiğimi çalıştırıyorum"
PowerShell, verileri nesne olarak ele alır, bu da özelliklere erişimi ve manipülasyonu kolaylaştırır.
$process = Get-Process -Name "powershell"
$process.Id
PowerShell, fonksiyonları modüller olarak paketleyip dağıtmanıza olanak tanır.
Import-Module MyModule
PowerShell, uzak makinelerde komutların yürütülmesine olanak tanıyan uzak bağlantıyı destekler.
Enter-PSSession -ComputerName Server01
PowerShell, PowerShell betiklerinin ve cmdlet'lerinin son derece verimli bir şekilde yürütülmesini sağlayan .NET çalışma zamanında çalışır.
Birçok IDE ve editör PowerShell geliştirmesini destekler, bunlar arasında:
Bir PowerShell betiği oluşturmak için geliştiriciler, kodlarını herhangi bir metin editöründe yazabilir ve .ps1
uzantısıyla kaydedebilir. Projeler, klasörlere düzenlenmiş birden fazla betik ve modül içerebilir.
PowerShell, çeşitli sektörlerde şu amaçlarla yaygın olarak kullanılmaktadır:
PowerShell, çeşitli programlama dilleriyle ilişkiler içindedir:
PowerShell betikleri, Python veya Bash gibi otomasyon ve betik görevlerini destekleyen dillere çevrilebilir. Doğrudan kaynak-kaynağa çeviri araçları olmasa da, manuel dönüşüm, cmdlet'leri hedef dildeki eşdeğer komutlar veya fonksiyonlar olarak yeniden yazmayı içerebilir.
Mevcut kaynak-kaynağa çeviri araçları şunları içerir: