⚙️ Linux Komutlarını PowerShell Üzerinde Çalıştırma: WSL ve Çapraz Platform Gücü
🎯 Bu Rehberde Ne Öğreneceksiniz?
Günümüzde PowerShell ve Linux arasındaki sınırlar neredeyse tamamen kalktı.
Bu rehberde:
- PowerShell (pwsh) içinde Linux komutlarını çalıştırmayı,
- Windows Subsystem for Linux (WSL) entegrasyonunu,
- Uzak yönetim (PowerShell Remoting) kullanımını öğreneceksiniz.
Ayrıca Bash ↔ PowerShell komut karşılaştırmalarını, sık hataları ve optimizasyon ipuçlarını bulacaksınız.
🧩 1. PowerShell ve Bash Karşılaştırması: Neden Birlikte Kullanılır?
PowerShell ve Bash farklı tasarım felsefelerine sahip iki güçlü kabuktur.
Bash metin akışlarını işlerken, PowerShell yapılandırılmış .NET nesneleri ile çalışır.
| Özellik | Bash (GNU) | PowerShell 7 (pwsh) |
|---|---|---|
| Veri İşleme | Metin akışları | .NET nesneleri |
| Pipeline | \n ile aktarım | Nesne tabanlı aktarım |
| Sözdizimi | POSIX kabuk | Verb-Noun cmdlet |
| Uzak Erişim | SSH, rsync | PowerShell Remoting (SSH) |
| Ana Kullanım | Hızlı betikler, sistem yönetimi | Otomasyon, nesne tabanlı işleme |
💡 Önemli Çıkarım:
PowerShell, Bash komutlarını çalıştırabilir (WSL veya Linux üzerinden),
ancak Bash, PowerShell nesnelerini doğrudan yorumlayamaz.
💻 2. PowerShell Üzerinde Linux Komutlarını Çalıştırma Yöntemleri
🧠 Yöntem 1: Doğrudan Linux Üzerine PowerShell Kurulumu
Linux dağıtımlarına PowerShell Core (pwsh) kurarak Bash yerine kullanabilirsiniz.
Adımlar:
# Gerekli paketleri yükle
sudo apt-get install -y wget apt-transport-https software-properties-common
Bu komut, Microsoft deposunu eklemek için gereken bağımlılıkları yükler.
# Microsoft deposunu ekle
sudo apt update && \
sudo apt install -y wget gnupg && \
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc && \
sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://packages.microsoft.com/ubuntu/22.04/prod jammy main"
Bu adım, Microsoft’un GPG anahtarını ekleyip PowerShell deposunu aktif eder.
# PowerShell'i yükle ve başlat
sudo apt update && sudo apt install -y powershell
pwsh
Artık ls -la gibi Linux komutlarını doğrudan PowerShell içinde çalıştırabilirsiniz.
🧰 Yöntem 2: Windows Subsystem for Linux (WSL) Entegrasyonu
Windows üzerinde çalışan PowerShell’den Linux komutlarını çağırmanın en pratik yolu WSL’dir.
Kurulum:
# WSL’i etkinleştir ve Ubuntu dağıtımını yükle
wsl --install -d Ubuntu-24.04
Bu komut, WSL çekirdeğini aktif eder ve varsayılan Linux dağıtımı olarak Ubuntu 24.04’ü kurar.
Kullanım:
# Linux komutu çalıştırma
PS C:\> wsl ls -lah /home
Linux dosya sisteminde ls -lah komutunu çalıştırır ve çıktıyı PowerShell’e getirir.
Gelişmiş kullanım:
# PowerShell nesnelerini Bash'e JSON olarak aktar
Get-Process | ConvertTo-Json | wsl jq '.[] | select(.CPU > 1)'
Bu komut, PowerShell süreç listesini JSON’a dönüştürür ve Linux’ta jq aracıyla filtreler.
🌐 Yöntem 3: PowerShell Remoting (Uzak Yönetim)
Uzak Linux sunucularında komut çalıştırmak için PowerShell Remoting kullanabilirsiniz.
# Uzak bağlantı
Enter-PSSession -ComputerName tr1-node01
# Linux komutları çalıştır
ls -l /var/log/
# Oturumu kapat
Exit-PSSession
Bu yöntem, Rabisu Bulut üzerindeki Linux sunucularını uzaktan yönetmek için idealdir.
🔁 3. Bash ve PowerShell Komut Eşleştirmesi
| Görev | Bash Komutu | PowerShell Karşılığı |
|---|---|---|
| Büyük dosyaları bul | `du -ah . | sort -h |
| Metin değiştirme | sed -i 's/eski/yeni/g' *.txt | Get-ChildItem *.txt |
| Paket güncelleme (Debian) | sudo apt update && sudo apt upgrade | wsl sudo apt update; wsl sudo apt upgrade |
💡 Bu tablo, karma betikleri çapraz platformda taşırken zamandan kazandırır.
⚖️ 4. Avantajlar ve Dezavantajlar
| Avantaj | Dezavantaj |
|---|---|
| 🔹 PowerShell tüm platformlarda çalışır (Windows, Linux, macOS) | 🔸 Öğrenme eğrisi yüksektir |
| 🔹 WSL entegrasyonu sorunsuzdur | 🔸 WSL çalışması ek kaynak tüketir |
| 🔹 JSON/XML nesne desteği güçlüdür | 🔸 Bash’e göre daha yavaş açılır |
| 🔹 Remoting ile uzak yönetim mümkündür | 🔸 Bazı modüller Linux’ta kısıtlıdır |
🧩 5. Yaygın Hatalar ve Çözümler
| Hata | Çözüm |
|---|---|
| Enter-PSSession bağlantı hatası | Linux için ssh kullan, WinRM yerine |
| Komut tanınmıyor | wsl kurulu mu kontrol et, komut önüne wsl ekle |
| pwsh bulunamadı | sudo apt install powershell ile kur |
| Script farklı davranıyor | Yol biçimlerini ve ortam değişkenlerini kontrol et |
| PowerShell yavaş açılıyor | En son sürüme güncelle, gereksiz modülleri devre dışı bırak |
❓ Sıkça Sorulan Sorular (SSS)
1. WSL olmadan Windows'ta Linux komutlarını çalıştırabilir miyim?
Hayır. WSL olmadan, PowerShell yalnızca Windows komutlarını tanır. WSL, Linux çekirdeğini Windows ortamına entegre ederek bu boşluğu kapatır.
2. PowerShell, Linux komutlarının çıktısını nasıl işler?
Linux çıktısı metin akışı şeklindedir. PowerShell bunu dizi (string) olarak yakalar. Yapılandırılmış veri gerekirse JSON veya XML formatına dönüştürün.
3. Karma betikler yazarken nelere dikkat etmeliyim?
Yol biçimleri farklıdır (C:\ vs /home/)
Değişken biçimleri farklıdır ($degisken vs ${degisken})
Kodları test etmeden otomasyona dahil etmeyin.
4. PowerShell neden Bash’ten daha yavaş başlar?
PowerShell Core, .NET Runtime üzerinde çalıştığı için başlangıç süresi daha uzundur. Ancak daha karmaşık görevlerde yüksek performans sunar.
🏁 Sonuç
Artık PowerShell üzerinden Linux komutlarını üç farklı yöntemle çalıştırabileceğinizi öğrendiniz:
Linux üzerinde pwsh kurulumu
WSL entegrasyonu
PowerShell Remoting ile uzak erişim
Bu bilgilerle, karma Windows + Linux ortamlarını tek terminalden yönetebilir, betiklerinizi çapraz platformda güvenle çalıştırabilirsiniz.
☁️ Tüm bu yöntemleri Rabisu Bulut sanal sunucularında deneyerek PowerShell ve Linux’un birleştiği gerçek hibrit altyapıyı test edebilirsiniz. 🚀