Merhaba arkadaşlar, bir önceki yazımda Windows PowerShell programlama dilinden bahsetmiştim. Bugün aynı konu başlığı altında yazıma devam edeceğim. Bugün sizlere operatörler, koşullu ifadeler, döngüler ve fonksiyonlar konularını anlatacağım. Bu konuların, programlama dili öğrenirken üzerinde titizlikle durulması gereken konular olduğunu düşünüyorum. Bu yüzden bu konuları tam olarak kavrayabilmeniz size ilerde kolaylık sağlayacaktır. Küçük tavsiyemizden sonra artık başlayabiliriz.
Operatörler
İlk olarak karşılaştırma operatörleriyle başlayabiliriz. Karşılaştırma operatörleri iki değeri birbirleriyle karşılaştırmada kullandığımız operatörlerdir. Genellikle koşullu ifadelerde kullanılırlar. Aşağıdaki tabloda bütün karşılaştırma operatörleri yer almaktadır. Operatörlerin PowerShell programlama dilinde kullanımı, değeri, örnek ve çıktısı yer almaktadır.
Operatör
|
Değeri
|
Açıklama
|
Örnek
|
Sonuç
|
-eq, -ceq, -ieq
-ne, -cne, -ine
-gt, -ogt, -igt
-ge, -oge, -ige
-lt, -clt, -ilt
-le, -cle, -ile
-contains
-coontains
-icontains
-notcontains
-notcoontains
-inotcontains
|
=
<>
>
>=
<
<=
|
Eşittir
Eşit değil
Büyük
Büyük eşit
Küçük
Küçük eşit
“Contains”
“Not
Contains”
|
2 -eq 5
1 -ne 2
1 -gt 2
2 -ge 1.9
1 -lt 2
2 -le 1.9
1,2,3 -contains
1
1,2 -notcontains1
|
$false
$true
$false
$true
$true
$false
$true
$false
|
Diğer bir operatör çeşidi de mantıksal operatörlerdir. Aynı şekilde bu operatörler de genellikle koşullu ifadelerde kullanılırlar. Koşullu ifadeleri anlatırken örneklerle göstereceğim. Mantıksal operatörleri de yukarıdaki gibi tablo halinde göstermek istiyorum.
Operatör
|
Açıklama
|
İlk
değer
|
İkinci
değer
|
Sonuç
|
-and
-or
-xor
-not
|
Mantıksal VE
Mantıksal VEYA
aynı ise “yanlış”
farklı ise “doğru”
Değil
|
True
False
False
True
False
False
True
False
True
-
|
True
True
False
True
True
False
True
True
False
False
True
|
True
False
False
True
True
False
False
True
True
True
False
|
Koşullu İfadeler
Koşullu ifadelerden olan "if" ile bir ifadeyi kontrol eder ve döndürdüğü sonuç doğru ise buna göre işlemler yaparız. Eğer sonuç yanlış ise "else" bloğuna atlar. Bu blokta da yanlış sonuca göre işlemleri yaparız. "Else if" bloğunda ise "else" bloğuna gelene kadar bir takım koşullu işlemleri yaparız.
Örnek 1:
$a = 10
if ($a -gt 10)
{
"$a değeri 10'dan büyüktür"
}
elseif ($a -eq 10)
{
"$a değeri tam olarak 10"
}
else
{
"$a değeri 10'dan küçüktür"
}
Çıktı:
10 değeri tam olarak 10
Örnek 2:
# 1. Örnek
Write-Host " 1. Örnek"
if ((1 -eq 2) -and (1 -eq 1) -or (1 -eq 1)) {
Write-Host " sonuc doğru if bloğu çalıştı "
} else {
Write-Host " sonuc yanlış else bloğu çalıştı"
}
#2. Örnek
Write-Host " 2. Örnek"
if ((1 -eq 2) -and ((1 -eq 1) -or (1 -eq 1))) {
Write-Host " sonuc doğru if bloğu çalıştı "
}
else {
Write-Host " sonuc yanlış else bloğu çalıştı "
}
Çıktı:
1. Örnek
sonuc doğru if bloğu çalıştı
2. Örnek
sonuc yanlış else bloğu çalıştı
Diğer bir koşullu ifademiz "switch/case" 'dir. "Switch/case" yapısı "if/else" yapısına benzer bir yapıdır. "If/else" yapısından farklı olarak, "switch" içindeki değeri "case" değerleriyle karşılaştırırız. Doğru sonucu bulduğumuzda "break" komutuyla çıkarız. "Break" kullanmazsak bütün "case" koşulları kontrol edilir. Aşağıdaki örneği inceleyebilirsiniz.
$a = Read-Host "Lütfen 1. Sayıyı giriniz"
$b = Read-Host "Lütfen 2. Sayıyı giriniz"
$ans = Read-Host "Lütfen Yapılacak aritmetik işlemi seçiniz
1)Toplama
2)Çıkarma
3)Çarpma
4)Bölme "
switch ($ans) {
1 {
$result = [int] $a + [int] $b
Write-Host $sum
break
}
2 {
$result = [int] $a - [int] $b
Write-Host $result
break
}
3 {
$result = [int] $a * [int] $b
Write-Host $result
break
}
4 {
$result = [int] $a / [int] $b
Write-Host $result
break
}
}
Döngüler
Döngüler, bir işi belirlediğimiz aralıklarda yapan kod bloklarıdır. İlk olarak "while" döngüsüyle başlayalım. "While" döngüsünde koşul olarak döngünün nerede biteceğini veya hangi koşulda biteceğini belirleriz. Windows PowerShell'deki kullanımını aşağıdaki örnekleri inceleyerek görebilirsiniz.
#1 den 10 a kadar sayıları ekrana yazdıran dongu
$a = 1
while($a -le 10){
Write-Host $a
$a++
}
Çıktı:
Output:
1
2
3
4
5
6
7
8
9
10
Bir diğer döngü çeşidimiz ise "for" döngüsüdür. Bu döngü de "while" döngüsü gibidir, fakat söz dizimi (syntax) farklıdır. Döngüyü tanımlarken de koşulumuzu belirleyebiliriz, blok içerisinde de koşulumuzu belirleyebiliriz. Aşağıdaki örnek, bulunduğumuz klasörü tarayarak, klasör içindeki nesnelerin dosya mı klasör mü olduğunu ekrana yazdıran bir döngüdür.
#PS C:\Users\Vahit\Courses>
$file = Get-ChildItem
for ($i = 0; $i -lt $file.Count; $i++) {
if (!( Get-Item $file[$i ]).PSIsContainer ) {
Write-Host $file[$i ].Name "is a file "
} else {
Write-Host $file[$i ].Name "is a directory "
}
}
Çıktı:
Computer Engineering Design is a directory
Computer Research is a directory
Documents is a directory
E-books is a directory
Example Codes is a directory
IdeaProjects is a directory
Information Retrieval is a directory
Java is a directory
Web Server is a directory
almanya2013.zip is a file
Chip Mart [2013]-LTRG.pdf is a file
CJ_05_Design.pdf is a file
javamagazine20130102.pdf is a file
PcNet Mart [2013]-LTRG.pdf is a file
thesis.pdf is a file
Working_with_Image_Files.pdf is a file
"Foreach" içinde bulunan dizi ya da nesnenin tüm elamanlarını tarar. Diğer döngülere göre daha sade bir söz dizimi vardır. Aşağıdaki örneği inceleyebilirsiniz.
#1 den 10 a kadar sayılar bir dizi tanımladık
#Dizinin içinde $key ile dolaşarak tüm elemanları ekrana yazdırıyoruz
$dizi= 1..10
Write-Host "Output:"
foreach ( $key in $dizi ) {
Write-Host $key
}
Çıktı:
Output:
1
2
3
4
5
6
7
8
9
10
Fonksiyonlar
Fonksiyonların programlama dillerinde önemi büyüktür. Bir kod bloğunu tekrar kullanmak istiyorsak, o bloğu tekrar yazmak yerine fonksiyon içinde yazabiliriz. Böylece istediğimiz yerde fonksiyonu çağırarak o bloğu kullanabiliriz. Aşağıdaki örnekleri inceleyerek Windows PowerShell'de fonksiyon kullanımını görebilirsiniz.
İşletim sistemindeki yazılımları, versiyonlarını ve yazılımların kaldırma bilgilerini "Out-GridView" komutu yardımıyla tablo halinde gösteren fonksiyonu ve çıktısını aşağıdaki örnekte görebilirsiniz.
function Get-InstalledSoftware {
$path = 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty -path $path |
Where-Object { $_.DisplayName -ne $null } |
Select-Object DisplayName, DisplayVersion, UninstallString |
Sort-Object DisplayName
}
Get-InstalledSoftware
Aşağıdaki örnekte, iki tane parametre alan ve aldığı parametrelerle bir takım işlemler yapan fonksiyonu inceleyebilirsiniz. Fonksiyonu çalıştırma esnasında önce fonksiyonu ardından birer boşluk bırakarak parametreleri yazıp çalıştırıyoruz.
#aldığı sayılarla 4 işlem yapan fonksiyon
Write-Host "Output:"
function aritmatic_operations($a, $b) {
Write-Host "$a plus $b is equal to" ($a + $b)
Write-Host "$a minus $b is equal to" ($a - $b)
Write-Host "$a mult $b is equal to" ($a * $b)
Write-Host "$a divide $b is equal to" ($a / $b)
}
aritmatic_operations 20 4
Çıktı:
Output:
20 plus 4 is equal to 24
20 minus 4 is equal to 16
20 mult 4 is equal to 80
20 divide 4 is equal to 5
Bu hafta anlatacaklarım bu kadar. Haftaya görüşürüz.
Referanslar:
Kitap: "Master-PowerShell with Dr. Tobias Weltner"
Kitap: "PowerShell tutorial, Eric Hjelmas"