Skip to main content

PowerShell’de Linux Kullanmak Mümkün mü?

Giriş

PowerShell ve Linux artık eskisi gibi ayrı dünyalar değil.
Cross-platform PowerShell (pwsh) ve Windows Subsystem for Linux (WSL) sayesinde, Linux komutlarını PowerShell'in içine kolay ve basit bir şekilde entegre edebiliyorsun.

PowerShell sayesinde, Linux ortamında kurulu WSL üzerinde görevleri yönetebilir ve otomasyon yapabilirsin. İstersen PowerShell’i doğrudan bir Linux makinesine kurup onu hem kabuk (shell) hem de betik dili olarak da kullanabilirsin.

Bu güçlü kombinasyon, geliştiriciler ve sistem yöneticileri için Windows ve Linux araçlarını aynı iş akışında sorunsuz bir şekilde birleştirme imkânı sunuyor.

Not:

Kabuk (Shell):
Kabuk, bilgisayarda işletim sistemiyle iletişim kurmamızı sağlayan arayüzdür. Yani sen komut yazarsın, kabuk o komutu işletim sistemine iletir.
Örneğin; Linux’ta bash, Windows’ta cmd veya PowerShell birer kabuktur.

Betik Dili (Scripting Language):
Betik dili ise tekrar eden işleri otomatikleştirmeye yarayan programlama dilidir. Küçük dosyalar (script) içine yazılır, çalıştırıldığında görevleri sırasıyla yerine getirir.
Mesela PowerShell betikleriyle “her gün saat 9’da yedek al” gibi işlemleri otomatik hale getirebilirsin.

Bu eğitimde, PowerShell içinde Linux yeteneklerinden nasıl yararlanabileceğini keşfedecek, uyumluluk için en iyi uygulamaları öğrenecek ve modern komut satırı araçlarının sunduğu avantajları kendi işletim sistemine uygun şekilde en verimli biçimde kullanmayı hep beraber göreceğiz.

PowerShell vs Bash

PowerShell ve Bash, güçlü komut satırı kabuklarıdır; ancak tasarım, sözdizimi ve yetenekler açısından ciddi farklılıklar gösterirler.
Aşağıda, güçlü yönlerini ve kullanım alanlarını anlamana yardımcı olacak detaylı bir karşılaştırma yer alıyor:

ÖzellikBash (GNU)PowerShell 7 (pwsh)
Veri İşlemeSadece metin akışları (düz stringler, satırlar)Yapılandırılmış .NET nesneleri (JSON, XML çıktısı alabilir)
OS DesteğiLinux, macOS, WSL, bazı Windows (Cygwin ile)Windows, Linux, macOS, WSL (tam çapraz platform)
Paket Yöneticisiapt, dnf, yum, pacman, brewwinget, choco, apt + Install-Module (PowerShell Gallery)
PipelineVeriyi \n (stdout/stdin) ile aktarırZengin nesneleri komutlar arasında aktarır (object pipeline)
Betik SözdizimiPOSIX shell sözdizimi, kısa, sembolikFiil-İsim cmdlet yapısı, .NET tabanlı, daha ayrıntılı
GenişletilebilirlikShell betikleri, harici binary’ler, aliaslarCmdlet’ler, modüller, sınıflar, harici binary’ler
Uzak ÇalıştırmaSSH, scp, rsync, expectPowerShell Remoting (WinRM, SSH), Invoke-Command
Tab TamamlamaProgramlanabilir bash tamamlamaGelişmiş, bağlam farkındalıklı, nesnelerle çalışır
Hata YönetimiÇıkış kodları, set -e, trapsTry/Catch/Finally, yapılandırılmış exception’lar
EtkileşimReadline, geçmiş, iş kontrolüPSReadLine, geçmiş, arka plan işleri, transcript’ler
EntegrasyonUnix araçlarıyla derin entegrasyonWindows, .NET ve REST API’leriyle derin entegrasyon
Varsayılan Konum/bin/bash, /usr/bin/bashpwsh (çapraz platform), powershell.exe (Windows)

  • PowerShell, otomasyon, sistem yönetimi ve özellikle yapılandırılmış veri işlemenin gerektiği durumlarda kullanılması idealdir. Windows ağırlıklı ya da karma ortamlarda güçlü bir tercih olur.

  • Bash ise hızlı betikler, Linux sisteminin yönetimi ve klasik komut satırı araçlarının zincirleme çalıştırmasında öne çıkmaktadır.

  • PowerShell, Bash komutlarını (özellikle WSL üzerinde) çağırabilir; fakat Bash doğrudan PowerShell nesnelerini işleyemez.

  • Her iki kabuk da artık çapraz platformda mevcut, bu da geliştiriciler ve sistem yöneticileri için esnek iş akışları sağlar.

Çoğu DevOps ve otomasyon görevinde, ortamına, betik yazma tarzına ve entegrasyon ihtiyaçlarına en uygun kabuğu seçmelisin.

Not: PowerShell, Bash’i çalıştırabilir; ancak Bash, PowerShell nesnelerini doğrudan yorumlayamaz.

Yöntem 1 – Linux Üzerine PowerShell Kurulumu

Ubuntu ve Debian tabanlı Linux dağıtımlarında PowerShell’i aşağıdaki komutlarla kurabilirsin.

Debian/Ubuntu tabanlı sistemlerde önce gerekli paketleri yükle:

# Microsoft deposunu eklemek ve PowerShell’i yüklemek için gerekli paketleri kur:  
sudo apt-get install -y wget apt-transport-https software-properties-common

Microsoft Deposunu ve Anahtarını Ekle

Aşağıdaki komutlarla Microsoft’un GPG anahtarını güvenilir anahtar listesine ekle ve PowerShell deposunu sisteme tanıt:

#Microsoft deposunu ve anahtarını ekleyin
sudo apt update && \
sudo apt install -y wget gnupg && \

# Microsoft’un GPG anahtarını indirip ekle

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc && \

# PowerShell için Microsoft deposunu ekle

sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://packages.microsoft.com/ubuntu/22.04/prod jammy main"
#Paket Listesini Güncelle ve PowerShell Kur 
sudo apt update && sudo apt install -y powershell
#PowerShell'i başlatın
pwsh
#Ortamı doğrulamak için bir Linux binary dosyası çalıştırın
uname -a
OutputLinux penguin 6.5.0-23-generic #24-Ubuntu ...

Yöntem 2 – Windows için Linux Alt Sistemi (WSL) Kullanımı

Windows’ta, PowerShell içinde Linux komutlarını çalıştırmak için Windows Subsystem for Linux (WSL) kullanabilirsin.

Windows'ta:

#WSL'yi etkinleştirin ve Ubuntu‑24.04 dağıtımını yükleyin
wsl --install -d Ubuntu-24.04

PowerShell ↔ Linux komut geçişi

PS C:\> wsl ls -lah /home
-rw-r--r-- 1 root root 0 Jul 1 ...
PS C:\> wsl cat /etc/os-release | sls VERSION
VERSION="22.04.4 LTS (Jammy Jellyfish)"

Ubuntu WSL içine PowerShell kurmak için şu komutu çalıştır:

sudo apt update && sudo apt install -y wget apt-transport-https software-properties-common
wget -q "https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb"
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y powershell

Artık Ubuntu WSL içinde PowerShell komutlarını çalıştırabilirsin. Başlatmak için:

PS /home/ubuntu> pwsh

Not:

WSL kurulumunu otomatikleştirmek için yapay zekâdan yardım alabilirsin.
Mesela şöyle bir şey isteyebilirsin:
“Bana bir PowerShell scripti yaz. Bu script WSL 2’yi kursun, Ubuntu’yu varsayılan yapsın ve .bashrc dosyasına bir bash alias eklesin.”

Bu sayede her şeyi tek tek elle yapmak yerine birkaç saniyede hazır hale getirirsin.

Yöntem 3 – Platformlar Arası Scriptler ve Kısayollar

Windows PowerShell içinden Linux komutlarını çalıştırmak için PowerShell Remoting özelliğini de kullanabilirsin.
Bu yöntem sayesinde farklı işletim sistemleri arasında köprü kurarak işlerini daha pratik hale getirebilirsin.

# Bir Linux sunucuya bağlan  
Enter-PSSession -ComputerName <linux-host>

# Linux komutlarını çalıştır
ls -l /home

# Oturumu kapat
Exit-PSSession

mixed.ps1'i şu şekilde oluşturun:

# PowerShell içinden Linux grep komutunu çalıştır
wsl grep -R "ERROR" /var/log/syslog | Select-String -Pattern 'auth'

# PowerShell nesnesini JSON'a çevirip bash tarafında jq ile filtrele
Get-Process | ConvertTo-Json | wsl jq '.[] | select(.CPU > 1)'

Windows veya Linux makineden çalıştırabilirsin.

PowerShell profil dosyana ( $HOME/.config/powershell/Microsoft.PowerShell_profile.ps1 ) Bash komutu için alias ekle:

Set‑Alias grep wsl grep
Set‑Alias jq wsl jq
# Windows veya Linux ana bilgisayarından çalıştırın
.\mixed.ps1

Yaygın Bash Görevlerini PowerShell’e Çevirmek

Linux (Bash) ve Windows (PowerShell) arasında çalışırken, birçok yönetim ve script yazma işi aslında aynı amaca hizmet eder.
Ama işin detayı, yani komutların yazımı (sözdizimi) ve kullanılabilir araçlar, iki tarafta farklılık gösterir.

Bu yüzden sık yapılan bazı Bash görevlerini PowerShell’de nasıl yapabileceğimizi bilmek işleri hızlandırır.

Aşağıda, dosya ve sistem işlemlerinde sık kullanılan bazı komutların Bash ve PowerShell karşılıklarını gösteren küçük bir tablo var.
Bu tablo, özellikle hibrit ortamlar ya da WSL (Windows Subsystem for Linux) kullanırken Bash ↔ PowerShell arasında geçiş yaparken hızlıca uyum sağlamana yardımcı olur.

GörevBash KomutuPowerShell Komutu
Büyük dosyaları bulma`du -ah .sort -h
Dosyadaki metni değiştirmesed -i 's/foo/bar/g' *.txtGet-ChildItem *.txt | ForEach-Object { (Get-Content $_) -replace 'foo','bar' | Set-Content $_ }
Paketleri güncelleme (Deb)sudo apt update && sudo apt upgradesudo apt update; sudo apt upgrade (WSL içinde ya da uzak oturumdan çalıştır)

Genelde Bash komutları doğrudan Linux sistemlerinde ya da Windows üzerinde WSL içinde çalıştırılır.
PowerShell karşılıkları ise asıl olarak Windows için tasarlanmıştır; fakat bir kısmı PowerShell Core sayesinde Linux üzerinde de kullanılabilir ya da uzak bağlantı (remoting) ile erişilebilir.

Paket yönetimi tarafında şunu bilmek önemli:
PowerShell’in kendisi Linux paketlerini yönetmez. Ancak WSL veya uzak oturum üzerinden Bash komutlarını çağırarak bu işlemleri rahatlıkla yapabilirsin.

Bu tablo sadece bir başlangıç noktasıdır — benzer şekilde çevrilebilecek çok daha fazla görev vardır.
Script’lerini farklı ortamlara taşırken mutlaka komut satırı farklılıklarını göz önünde bulundur ve her zaman hedef ortamda test et.
Böylece sürpriz hatalardan kaçar ve hem Bash hem de PowerShell tarafında sorunsuz bir çalışma elde edersin.

Linux'u PowerShell ile Kullanmanın Artıları ve Eksileri Nelerdir?

Linux ile PowerShell Kullanmanın Artıları ve Eksileri

ArtılarEksiler
Çapraz Platform Uyumluluğu: PowerShell; Windows, Linux ve macOS’ta doğal olarak çalışır. Bash ise ağırlıklı olarak Linux’a özgüdür.Öğrenme Eğrisi: PowerShell’in sözdizimi ve nesne tabanlı yaklaşımı, Bash’e alışkın olan kullanıcılar için yabancı olabilir.
PowerShell Remoting: Windows PowerShell’den Linux komutlarını çalıştırmaya imkân tanır ve uzak yönetimi kolaylaştırır.Eksik Özellikler: Bazı yerel Linux araçları veya script’leri PowerShell’de birebir çalışmayabilir, uyarlama gerekebilir.
WSL Entegrasyonu: Windows Subsystem for Linux (WSL) sayesinde Linux komutlarını sorunsuz çalıştırabilir, iki ortam arasında köprü kurabilirsin.Performans Yükü: Komutları WSL veya uzak bağlantı ile çalıştırmak, Bash’te doğrudan çalıştırmaya göre ek gecikme yaratabilir.
PowerShell Core: Tüm büyük platformlarda kullanılabilir, birçok Linux komutu ve script’ini doğrudan çalıştırabilirsin.Ekosistem Farklılıkları: Tüm PowerShell modülleri Linux’ta tam desteklenmez, bu da işlevselliği kısıtlayabilir.
Performans Avantajı: PowerShell, büyük veri objelerini verimli şekilde işleyebilir, daha az dış bağımlılıkla karmaşık görevleri halledebilir.Kaynak Kullanımı: PowerShell, basit veya tekrar eden işlerde Bash’e göre daha fazla RAM ve CPU tüketebilir.
Script Taşınabilirliği: Tutarlı cmdlet davranışı sayesinde script’ler farklı işletim sistemlerinde daha kolay taşınabilir.Başlangıç Süresi: PowerShell’in açılış süresi Bash’e göre daha uzundur; bu da kısa süreli script’lerde performansı etkileyebilir.

Linux'u PowerShell ile Kullanırken Yapılan Yaygın Hatalar ve Çözümleri Nelerdir?

Yaygın HataNasıl Çözülür?
PowerShell Remoting: Enter-PSSession kullanarak Linux hostuna bağlanmaya çalışmakEğer bağlantı hatası alırsan, Linux sistemleri için ssh kullan. Çünkü Enter-PSSession daha çok Windows için tasarlanmıştır.
WSL Entegrasyonu: Linux komutları PowerShell’de çalışmaz ya da tanınmazLinux komutlarını wsl ile çalıştır (örnek: wsl ls). Hâlâ çalışmıyorsa WSL’in yüklü ve aktif olduğundan emin ol.
PowerShell Core: Komutlar bulunmuyor veya Linux/macOS ile uyumsuzPlatform bağımsız pwsh komutunu kullan. Eğer pwsh bulunmazsa, işletim sistemine uygun PowerShell Core’u yükle.
Script Taşınabilirliği: Script’ler farklı sistemlerde farklı davranıyorİşletim sistemi bağımlı yollar veya komutlardan kaçın. Her platformda geçerli olan komutları kullan ve scriptlerini test et.
Başlangıç Süresi: PowerShell özellikle Linux’ta yavaş açılıyorEn güncel pwsh sürümünü kullandığından emin ol. Performansı artırmak için gereksiz modülleri devre dışı bırak.

Sonuç

Bu eğitimde, Bash ve PowerShell arasında köprü kurarak Linux ve Windows komut satırlarını birlikte kullanmayı öğrendin.
Artık şunları yapabiliyorsun:

  • Bash içinden PowerShell komutları çalıştırmak (ve tam tersi),
  • Her iki ortamı kullanan hibrit scriptler yazmak,
  • Çapraz platform otomasyonu sağlamak için pratik örnekler uygulamak.

Ayrıca, kabukları karıştırırken dikkat edilmesi gereken bazı noktaları da gördük:

  • Ortam değişkenleri,
  • Yol (path) formatları,
  • Çıktı kodlamaları (encoding).

Bunun yanında, WSL (Windows Subsystem for Linux) ile Windows üzerinde Linux komutlarını çalıştırmayı,
ve PowerShell Core sayesinde Linux/macOS üzerinde PowerShell’in nasıl doğal şekilde kullanılabildiğini inceledik.

Kısacası, bu yöntemleri öğrenerek:

  • Çalışma düzenini hızlandırabilir,
  • Karmaşık işleri otomatikleştirebilir,
  • Hem Linux hem Windows kabuklarının avantajlarını en verimli şekilde kullanabilirsin. 🚀