PowerShell Öğreniyorum – Değişkenler – Bölüm 1

Tüm script dillerinde olduğu gibi PowerShell içerisinde de string ya da integer tabanlı nesneler istenilen değişkenlere atanarak, scriptin devam eden bölümünde ihtiyaç olduğunda rahatlıkla kullanılabilir.

Bunun size sağlayacağı yararı günlük hayattan birkaç örnek ile pekiştirebiliriz. Cep telefonu kullanmaya başlayan bir bireyin başlangıçta gerçekleştirdiği temel eylem, iletişimde olunan kişilerin telefon numaraları, mail adresleri gibi bilgileri, telefon rehberine İsim-Soyisim şeklinde kaydetmektedir. Böylece birisi aranmak istendiğinde telefon rehberinden ilgili kişinin isminin seçilmesi yeterlidir. Eğer başta bu tanımlamayı yaptıysanız, aynı telefonu kullandığınız süre boyunca o telefon numarasını ezberden çevirmenize gerek kalmayacaktır.

PowerShell içerisinde değişken kullanımı da bu örnekle paralel süreçler izlemektedir. Scriptin belirli bölümlerinde, scriptin devamında kullanılacak değerleri, hatırlanması ve kullanılması daha kolay değişkenlere atayarak, hem scripti yazan için, hem de scripti daha sonrasında inceleyecek olanlar için aydınlık bir yol çizilmiş olur. Değişken kullanımı script içerisinde kullanım kolaylığı sağlamak dışında, atanan değerleri birlikte kullanabilme noktasında da son derece esnek bir yapı oluşturmaktadır.

Örneğin hazırlanacak PowerShell scripti içerisinde, birçok noktada, yerel makinenizde bulunan C:WindowsSystem32config dizin bilgisi girilmesi gerektiğini düşünelim. Bu noktada script boyunca gerekli olan her satırda dizin bilgisi salt haliyle kullanılabilir.

Ya da;


Şeklinde bir tanım, scriptin başlangıcında yapılarak, ihtiyaç duyulan her noktada yalnızca $dizin değişkenini kullanarak daha etkili bir çözüm üretilebilir.

Değişkenlerin Özellikleri

PowerShell içerisinde değişken kullanımı için dikkat edilecek unsurlar ve gereksinimler adım adım incelenirse;

  • Değişken atamasını gerçekleştirmek için, belirlenen değişken isminin başına $ işareti konulması yeterlidir. PowerShell, $ işareti atanan bir metini otomatik olarak değişken olarak kabul edecektir.
  • Veri atanan bir değişkenin, atandığı değeri, metin tabanlı çıktı verebilmesi için, değişkenlerin ” (çift tırnak) içerisinde kullanılması gereklidir.

Örneğin yukarıdaki çıktı tek tırnak kullanımı ile gerçekleştirilseydi aşağıdaki gibi bir sonuç elde edilecekti.



Görüldüğü gibi tek tırnak kullanımında tanımlanan değişkenler, Shell tarafından ilgili değerleri çıktı olarak vermeyecektir.

  • $ işareti ile değişken tanımı yapıldıktan sonra, (=) işareti ile ilgili veri değişkene atanmaktadır.
  • Değişkenlerin veri tipleri, değişken başında kullanılan köşeli parantez ile belirlenebilir.

Veri tipleri ile ilgili aşağıdaki örneği inceleyelim.


Bu şekilde bir atama gerçekleştirip, ekrana $a çıktısı verildiğinde, PowerShell atanan değeri string olarak işleyecek ve size metin tabanlı bir şekilde “Anıl ERDURAN” değerini verecektir.

Aynı değer ataması, veri tipi integer olarak belirlenen bir değişkene atanmak istendiğinde,


şeklinde bir hata alınacaktır. Hata içeriğinde görüldüğü gibi, $a değişkenine string değeri atanması gerekliyken, bu formata uymayan bir değer (Anıl ERDURAN) ataması yapılmaya çalışılmıştır.


Yukarıdaki örnekte, $numara değişkeni için veri tipi Byte olarak belirlenmiş ve 25 değeri atanmıştır.

Bir sonraki atamada ise 567 değeri atanmış, ancak shell tarafından, atanan değerin Byte veri tipi için sınırlandırılmış değerlerden daha büyük olduğu hatası verilmiştir. (Byte veri tipi 0-255 arası değerler alabilmektedir.)

Her zaman gerekli olmasa dahi, ileride değişkenlere farklı formatların atanmasını önlemek ve karışıklığın önüne geçmek için, değişken tanımında veri tipi ataması yapılabilir. Özellikle karmaşık scriptlerin dizaynında, tanımlanan değişkenler için veri tiplerinin belirlenmesi, ileride ortaya çıkacak hataların en aza indirgenmesinde dikkat edilmesi gereken bir noktadır. Integer olarak tanımlanması ve matematiksel hesaplamaya sokulması gereken bir değişkenin, PowerShell tarafından string olarak algılanması sonucunda, tüm script işleyişinde sıkıntılar meydana gelecektir.

Değişken tanımlarında kullanılabilecek veri tipleri aşağıdaki tabloda görülmektedir.

Veri Tipi Tanım
[int] 32-bit imzalı tamsayı
[long] 64-bit imzalı tamsayı
[string] Unicode karakterler için karakter katarı
[char] Unicode 16-bit karakter
[byte] Imzasız 8-bit karakter
[bool] Boolean True/False değerleri
[decimal] 128-bit ondalık değer
[single] Single-precision 32-bit floating point number
[double] Double-precision 64-bit floating point number
[xml] Xml nesnesi
[array] Değerler dizisi
[hashtable] Komut tablosu

Çoğunlukla, bir değişkene atanan değerin veri tipini, PowerShell otomatik olarak tanıyarak ilgili atamayı gerçekleştirecektir. Ancak istenirse, değer atanmış bir değişken için ya da atama öncesi ilgili değerler için
GetType().Name komutu kullanılarak veri tipi görüntülenebilir.