Windows işletim sistemi bulunan bilgisayarların oldukça aşina olduğu Komut İstemi, bilgisayar kullanıcılarının arayüzle yapamadığı işlemleri hızlıca yapmasına olanak tanır. Bu sayede bilgisayar üzerinde performans optimizasyonu, toplu dosya silme ve ağ kontrolü gibi işlemler gerçekleştirilebilir. Ancak 2000’li yıllarla birlikte Windows dünyasına katılan Powershell, bunu bir adım ileriye götürerek modern programlarla ve görsel arayüzlerle doğrudan çalışabilen bir komut betiği olarak karşımıza çıkmakta ve yılların emektarı Komut İstemi programının bir nevi halefliğini üstlenmektedir.
İkisinden de haberdar olan Windows işletim sistemi kullanıcıları, hangi komut betiği ortamını kullanacağına dair kararsız olabilir. Bu yazıda bu sorun, Powershell komut betiği ile Komut İstemi arasındaki detaylı bir karşılaştırma ile çözülecektir.
Fark 1: İşletim Sistemi Uyumluluğu
Komut İstemi, önce MS-DOS, sonra bir Windows işletim sistemi parçası olarak hayatına devam etmiş ve günümüze kadar gelmiştir. Windows 11 itibariyle varlığını sürdüren ve standart bir işletim sistemi özelliği olarak gelen Komut İstemi, sadece MS-DOS ve Windows işletim sistemlerinde çalışan bir yazılımdır. Farklı işletim sistemlerinin kendilerine ait komut istemlerinin bulunması ise, Windows’taki Komut İstemi programının başka işletim sistemlerinde kullanılma olasılığını geçersiz ve gereksiz kılmaktadır.
Powershell komut betiği ise, Microsoft .NET bazlı bir yazılımdır ve Windows XP ve üstü işletim sistemlerinde çalışmaktadır. .NET Core temelli Powershell Core sayesinde Linux işletim sistemi üzerinde Powershell komutları çalıştırılabilmektedir. Bu durum, Powershell komut betiğinin sahip olduğu diğer avantajların birden fazla işletim sistemi üzerinde kullanılmasına olanak sağlamaktadır.
Fark 2: Syntax (Sözdizimi)
BASIC dilinin hakim olduğu 80’li yıllara dayanan Komut İstemi, BASIC’e muadil olacak kadar basit bir sözdizimine sahiptir. Komut İstemi bünyesinde basit komutlar, fonksiyon ve goto yapıları bulundurmaktadır. Küçük ve orta ölçekli betik programları geliştirmek için kullanılabilen Komut İstemi, özellikle küçük boyutta arayüzle yapılması çok daha zor olan işlemlerin hızlıca yapılmasına olanak sağlamaktadır.
Buna kıyasla Powershell, modern programlama dillerine yakın (C# gibi) bir söz dizimine sahiptir. .NET mimarisinde program yazmış birisinin alıştığı tarzda fonksiyon yazımı, if-elseif-else yapıları, switch-case yapılarına ek olarak, classlar aracılığıyla nesne kullanan komut betikleri yazılabilmektedir. Cmdlet’ler ile çalışan ve kullanıcılara kendi cmdlet’lerini yazmaya olanak veren Powershell, buna ek olarak Komut İsteminde çalışan bütün komutları çalıştırabilmekte, bu sayede Komut İsteminden Powershell’e sorunsuz geçiş olanağı tanınmaktadır.
Powershell, bunlara ek olarak Bash dilindeki programları ve komutları tanıyıp çalıştırabilmektedir.
Fark 3: Parametreler ve Veri Alışverişi
Komut İstemi ile veri alışverişi son derece düşük düzeydedir ve bir .bat programından diğer .bat programına parametre aktarımı gibi basit yöntemlerle yapılabilmektedir. Powershell ise .NET mimarisinin gücünü kullanarak objeler ile veri alışverişi gerçekleştirebilmektedir. Komut İstemi sadece string tipi parametre ve sınırlı sayıda değişken ile veri alışverişi gerçekleştirebilmekte iken, Powershell bu kısıtlamalara tabi değildir.
Fark 4: Entegre Kodlama Ortamı
Komut İstemi programı yazmanın en bilinen yolu Not Defteri’dir. Ancak Not Defteri herhangi bir syntax tanımlamasına sahip olmadığından dolayı sözdizimi kontrolü yapılamamaktadır. İnternette bulunabilecek ücretsiz Komut İstemi
Bu entegre kodlama ortamı, bir ekranda kodları yazıp diğer ekranda denemenize olanak tanır, bu sayede daha piyasaya sürülmeden kodunuzun çalışıp çalışmadığını veya düzeltilmesi gereken yerlerin neresi olduğunu bulma şansınız olur.
NOT: Bu arada Komut İstemi programları yazmak için Visual Studio Code’da resmi bir eklenti mevcuttur.
Fark 5: Görsel Programlama
Komut İstemi ve “görsel programlama” genelde aynı cümle içerisinde kullanılmaz. Çünkü Komut İstemi kendi üzerinden görsel programlamaya olanak vermez. Komut İstemi ile yapılabilecek en görsel programlama mesaj kutusu çıkarmaktır ve bu durum Windows’un Home sürümlerinde kullanılamamaktadır. Bunun aksine Powershell içerisine System.Windows.Forms import edip tıpkı normal Visual Studio’daki gibi gelişmiş görsel arayüzler tasarlayabilirsiniz. Powershell’in bu özelliği, Python’un tkinter kütüphanesini andırır, ancak tkinter sonradan indirilmesi gereken bir kütüphane iken, Powershell .NET bazlı bir komut betiği olarak bu kapasiteye standart olarak sahiptir.
Sonuç
Powershell ve Komut İstemi, günümüzde Windows işletim sistemi içerisinde aynı anda bulunan iki komut betiği programıdır. Her iki komut betiği de, kullanıcıların normal arayüz üzerinden daha zor yapabildiği işlemleri kolaylıkla yapmaya olanak sağlamaktadır, hatta Powershell bu işlemlerin yapılabileceği bir arayüz tasarlanmasına izin vererek bu sorunu ortadan kaldırmaktadır. Bu özelliklere bakarak Powershell’in gerçek anlamda bir Komut İstemi halefi olduğunu söyleyebiliriz. Ancak geleneksel Windows işletim sistemi kullanıcısının daha alıştığı komut betiği olmasının yanı sıra kullanım kolaylığı ve gerçekleştirilebilecek komutlar ile Komut İstemi, en azından bir süre daha bizimle beraber olacak gibi gözüküyor.
Dolayısıyla şu durumda, basit komut betikleri yazmak isteyen kullanıcıların Komut İstemi, Komut İstemi’nde kendini ilerletmiş, gelişmiş komut betikleri yazmış ancak kendini bu konuda daha ileri taşımayı isteyen kullanıcıların Powershell tercih etmesi olağan bir durum olarak karşımıza çıkmaktadır.