24 Mart 2013 Pazar

Windows PowerShell Programlama Dili



    Merhaba arkadaşlar, geçen hafta sizlere Windows PowerShell komutlarından bahsetmiştim. Bugün sizlere Windows PowerShell programlama dilini anlatacağım. İlk olarak sizlere Windows PowerShell ISE'yi tanıtmak istiyorum. Windows PowerShell ISE (Integrated Script Environment) komutları yazabileceğimiz, yazdığımız komutları çalıştırabileceğimiz, test edebileceğimiz ve "Debug" yapabileceğimiz bir ara yüzdür.  Windows PowerShell ISE'ye aşağıdaki yolu izleyerek ulaşabilirsiniz.

    Başlat > Tüm Programlar > Donatılar > Windows PowerShell > Windows PowerShell ISE

    Alternatif olarak Başlat menüsündeki arama çubuğuna "PowerShell ISE" yazarak da ulaşabilirsiniz.

Windows PowerShell ISE


Değişken Tanımlama ve Değer Atama


    İlk olarak değişken tanımlamayı ve bu değişkene değer atamayı göstermek istiyorum. Değişken tanımlamak çok basittir. Tek yapmamız gereken belirlediğimiz bir değişken isminin önüne "$" işaretini koyuyoruz ve "=" operatörünü kullanarak bu değişkene değer atıyoruz. Kod parçacıklarını çalıştırmak için çalıştıracağımız kodu seçip sağ tıklayıp "Run Selection" 'a tıklıyoruz.

# first.ps1
$name = "Vahit"
$lastname = "Türkoğlu"
$fullname = "$name $lastname"
$age = 24
Write-Host " I'm $fullname and I'm $age years old."


Değişken tanımlama ve değer atama


    Değişken tanımlama ve değer atama, komut yazma kısmında da bize kolaylık sağlamaktadır. Örneğin Windows PowerShell'de yazdığımız herhangi bir komutu bir değişkene atayabiliriz.

# Komutları tutan geçici bir değişken:
$cDiziniGoster = Get-ChildItem C:\
$cDiziniGoster



    Tanımladığımız değişkenleri "Dir variable: ?" komutuyla görebiliriz.

# Değişkenleri gösterme
$deger1 = 1
$deger2 = 2
$deger3 = 3
$deger4 = 4
$deger5 = 5
Dir variable:deger*


    Silmek istediğimiz bir değişkeni "del variable:\deger1" komutunu kullanarak silebiliriz.

# Değişken sil
del variable:\deger1
# değişkenleri göster
Dir variable:deger*


Dizi Tanımlama


    Windows PowerShell'de dizi tanımlamanın iki farklı yolu vardır. Aşağıda iki farklı yolu tek örnekte görebilirsiniz. İkisi de aynı görevi yapmaktadır. Hangisi kolayınıza gelirse onu kullanabilirsiniz.


# Array tanımlama 1.yol
$a = "Linux","Mac","Windows",1,2,3
Write-Host $a[2]         #Windows
$a += 4
Write-Host $a         # son hali
Write-Host $a.Count  #array uzunlugu


# Array tanımlama 2. yol
$os =@(" linux ", " windows ")
Write-Host $os
$os +=@(" mac ")
Write-Host $os[1]     # windows
Write-Host $os        # tüm değerler
Write-Host $os.Count  # array uzunluğu


    Sıralı bir diziyi tek bir satırda oluşturabiliriz.

# 1'den 15'e kadar olan sayıları tutan dizi
$dizi = 1..15
Write-Host $dizi


    Dizimiz sadece tam sayıları tutsun istiyorsanız, dizi tanımlamasını aşağıdaki gibi yapabilirsiniz.

# sadece tamsayıları tutan dizi
[int[]]$dizi= 1,2,3,4,5


"Hash Table" Tanımlama


    Bildiğimiz üzere "hash table" da tutulan değişkenlerin ismi ve ona ait bir değeri bulunmaktadır. Windows PowerShell'de "hash table" tanımlarken, dizi tanımlamada kullandığımız "@()" yerine "@{}" simgeleri kullanılır. Aşağıdaki örneği inceleyebilirsiniz.





# Hast Table tanımlama
$list = @{Name = "PC01"; IP="10.10.10.10"; User="Vahit Türkoğlu"}
$list

# IP'nin değerini ekrana yazdırır.
$list["IP"]

# Sırasıyla Name ve IP' nin değerlerini yazdırır.
$list["Name", "IP"]

# IP' nin değerrini yazdırır.
$list.IP


# IP' nin değerrini yazdırır.
$key = "IP"
$list.$key

# Hash table daki tüm elemanları yazdırır
$list.keys

# Hash table daki tüm elemanların değerlerini sırasıyla yazdırır.
$list[$list.keys]



    Windows PowerShell programlama dili .NET "framework" u tarafından desteklendiğinden nesne tabanlı programlama alt yapısına sahip bir dildir. Aşağıdaki örnekte bir nesne oluşturup o nesneyle bir takım işler yapan kod parçacığı yer almaktadır.


# Nesne oluşturma
# myhost nesnesi oluşturuldu ve bazı özellikler verildi
$myhost = New-Object PSObject -Property @{
          os="";
          sw=@(" ");
          user=@{}
        }
        
#os a linux degerı atandı       
$myhost.os=" linux "

#sw ye aşağıdaki değerler atandı  
$myhost.sw +=@(" gcc "," flex "," vim ")

#user a aşağıdaki degerler atandı
$myhost.user += @{" frodeh "=" Frode Haug "; " monicas "=" Monica Strand " }

# aşağıda myhostu kullanarak diğer değişkenlere ulaşabiliyouruz
Write-Host $myhost.os
Write-Host $myhost.sw[2]
Write-Host $myhost.user[" monicas "]




Giriş - Çıkış İşlemleri


    Her programlama dilinde sıkça kullandığımız giriş-çıkış (input-output) işlemlerini aşağıdaki örnekle sizlere açıklayabilirim. "Read-Host" komutu klavyeden bir değer girmemizi sağlayan bir komuttur. "Write-Host" komutu ise bir değişkene ait değeri ekrana yazdıran komuttur.


#klavyeden bir değer giriniz
$deger1 = Read-Host "Adınız"

#girdiğiniz değeri ekrana yazdırır
Write-Host "Ad: " $deger1

$deger2 = Read-Host " Soy Adınız"
Write-Host "Soy Ad: " $deger2

$deger3 = Read-Host "Yaşınız"
Write-Host "Yaş: " $deger3

$deger4 = Read-Host "Bölümünüz"
Write-Host "Bölüm: " $deger4

$deger5 = Read-Host "Okulunuz"
Write-Host "Okul: " $deger5




    Bu haftalık anlatacaklarım bu kadar. Haftaya Windows PowerShell Programlama diline devam edeceğim. Hoşçakalın.


Referanslar:
Kitap: "Master-PowerShell with Dr. Tobias Weltner"
Kitap: "PowerShell tutorial, Eric Hjelmas"

3 yorum: