Skip to main content

⚙️ 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.

ÖzellikBash (GNU)PowerShell 7 (pwsh)
Veri İşlemeMetin akışları.NET nesneleri
Pipeline\n ile aktarımNesne tabanlı aktarım
SözdizimiPOSIX kabukVerb-Noun cmdlet
Uzak ErişimSSH, rsyncPowerShell Remoting (SSH)
Ana KullanımHızlı betikler, sistem yönetimiOtomasyon, 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örevBash KomutuPowerShell Karşılığı
Büyük dosyaları bul`du -ah .sort -h
Metin değiştirmesed -i 's/eski/yeni/g' *.txtGet-ChildItem *.txt
Paket güncelleme (Debian)sudo apt update && sudo apt upgradewsl sudo apt update; wsl sudo apt upgrade

💡 Bu tablo, karma betikleri çapraz platformda taşırken zamandan kazandırır.


⚖️ 4. Avantajlar ve Dezavantajlar

AvantajDezavantaj
🔹 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ıyorwsl kurulu mu kontrol et, komut önüne wsl ekle
pwsh bulunamadısudo apt install powershell ile kur
Script farklı davranıyorYol biçimlerini ve ortam değişkenlerini kontrol et
PowerShell yavaş açılıyorEn 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. 🚀