Windows’un eski komut istemcisi(CLI, Command Line Interface) olan cmd.exe, işletim sistemi üzerinde tam hakimiyet sahibi değildi ve pek çok işlem arayüzden yapılmak zorundaydı. *Nix(Unix, Linux türevi) sistemlerde tecrübesi olan kullanıcılar, Windows kullanırken bir komut satırının eksikliğini hissetmekteydiler.
Microsoft, bu eksikliği gidermek için PowerShell’i geliştirdi.
- Hem dilin hem de komut istemcisinin adı olan PowerShell, önceden sadece bir Windows Uygulaması iken, 2016 itibariyle çoklu platform ve açık kaynaklı bir uygulama haline geldi. Windows 7’den itibaren yayınlanan sürümlerde standart olan PowerShell’i, macOS veya Linux işletim sistemli bilgisayarınıza kurabilirsiniz.
- PowerShell işlemleri cmdlet adı verilen komutlarla yapılır. cmdlet komutlarını birleştirerek script dosyaları(bkz. Batch File, BAT, Shell Script, SH) oluşturabilirsiniz.
- Komutları ya da scriptleri kullanarak bilgisayarınızı ya da ağdaki diğer bilgisayarları yönetebilir, işlerinizi otomatize edebilirsiniz.
- PowerShell kullanarak yerel veya uzak ağda bulunan Windows ya da Linux makineleri yönetebilirsiniz.
- PowerShell API’sini kullanarak, PowerShell özelliklerini diğer uygulamaların içinden kullanabilirsiniz.
- .NET api’sini desteklediği için, PowerShell’i, interaktif bir .NET konsolu olarak kullanabilirsiniz.
Windows’ta PowerShell’i açmak
![]() |
Çalıştır(Run) Penceresi. |
![]() |
PowerShell Komut İstemcisi |
Genel Komut İstemcisi Kavramları
Alias(Kısa Ad)
Ekranların düşük çözünürlüklü, baytların değerli olduğu yıllarda komutlar kısaydılar.
Günümüzde böyle bir kısıtlama yok. PowerShell’de komutlar açıklayıcı olmaları için uzunlar. Eski komutlar ise yeni uzun komutların kısa adları olmuş durumdalar.
Örneğin hem bash hem cmd’de klasör değiştirmek için kullanılan CD komutu, PowerShell’de Set-Location olarak karşımıza çıktı. Ama Set-Location yazmak yerine halen CD komutunu kullanabiliyoruz.
Büyük işler yaptığınız scriptleri yazarken uzun adları, anlık işler için ise kısa adları kullanmak yerinde olacaktır.
Pipeline
Comment
CD Klasor
Bazı Temel Komutlar
Get-ChildItem(ls veya dir)
Bir konumda bulunan tüm nesneleri almak için kullanılır.
Linux bash’indeki ls ve Windows cmd’deki dir komutunun karşılığıdır ve bu her iki komut Get-ChildItem yerine kullanılabilir.
PowerShell’de parametre vermeksizin Get-ChildItem ls veya dir komutunu çalıştırırsanız, içinde bulunduğunuz klasördeki tüm nesneler(dosya veya klasör) listelenir.
Write-Output
Verilen nesneyi yazdıran komut. Bu nesne doğrudan bir metin ya da bir değişken olabilir.
cmd ve bash kısa adı ECHO’dur ve bu kısa adlar PowerShell’de de geçerlidir. Bir diğer kısa adı ise write’dır.
ForEach(%)
Bir nesne dizisinin içinde dönmek için kullanılan komut.
Yazının devamında detaylı olarak inceleyeceğiz.
Get-Command(gcm)
Kullanılabilir komutların listesini almak için kullanılan komut.
Get-Help
Verilen komutun kullanımı hakkında bilgi verir. Linux karşılığı man pages.
Öğrendiklerimizi birleştirelim
- İlk satırda bir değişken(dirs) oluşturuyor ve hemen atamasını yapıyoruz. Değişkenin içine atadığımız değer, Get-ChildItem -Directory komutunun çıktısı. Yani o an içinde bulunulan klasörde bulunan klasörler.
- İkinci satır ForEach komutu ile başlıyor. Üst satırda oluşturduğumuz değişken olan dirs, ForEach komutunun içinde döneceği nesne kolleksiyonu. Her bir adımda üzerinden geçilen nesne ise dir adlı değişkene atanıyor.
- Üçüncü satırda, dir değişkenini yazdırıyoruz.
![]() |
Kod ve Çıktısı. |
![]() |
Sadece klasör isimlerini yazdırdık. |
Pipeline kullanarak kodu sadeleştirelim
- Burada önce Get-ChildItem -Directory komutu çalıştırılmakta ve bunun çıktısı, Operatörün diğer tarafında kalan komuta girdi olarak gönderilmektedir.
- Bu ikinci komut, yani ForEach de oldukça kısalmıştır çünkü pipeline operatörünü takip ettiği için hangi kolleksiyonu kullanacağını zaten bilmektedir.
- Üçüncü komutumuz olan Write-OutPut ise, ForEach’in o an üzerinden geçmekte olduğu nesnenin bilgisini tutan $_ değişkenini yazdırmaktadır.
![]() |
Kısaltılmış kodun çıktısı, uzun kodun çıktısından farklı değil. |
Kısa adları kullanarak kodu daha da kısaltalım
![]() |
Kısatılmış kodun çıktısı. |
Özet
- PowerShell’in ne olduğunu, özelliklerini, arka planını
- Komut Satırı İstemcisi, Comment, Alias, Pipeline, Script gibi kavramları
- Bazı temel PowerShell komutlarını