PowerShell Fonksiyon
PowerShell Fonksiyonlar, PowerShell Return, PowerShell Functions, PowerShell Basit ve İleri Düzey Fonksiyonlar
PowerShell Fonksiyon
Aynı kodun birden fazla defa kullanılması gerektiğinde, PowerShell fonksiyon yapısı kullanılır. Fonksiyon, adı kullanıcı tarafından atanan PowerShell deyimlerinin yani bir komut listesidir. Bir fonksiyon çalıştırılmak istendiğinde, o fonksiyonun adının yazılması yeterlidir.
Cmdlet’ler gibi, fonksiyonlar da parametre alabilirler. Fonksiyon parametreleri pipeline ile veya komut satırından okunabilir.
PowerShell Return Değeri
PowerShell fonksiyonları, değişkenlere ve cmdlet’lere atanabilen veya diğer işlevlere iletilebilen değerler döndürebilir. “Return” anahtar kelimesini kullanarak, geri dönüş değerini belirtebiliriz.
Sözdizimi
Aşağıdaki blok bir fonksiyon için sözdizimini açıklamaktadır:
function [<kapsam:>]<ad> [([tip]$parametre1[,[type]$parametre2])] { param([tip]$parametre1 [,[tip]$parametre2]) dinamikparametre {<ifade listesi>} başla {<ifade listesi>} işlem {<ifade listesi>} bitir {<ifade listesi>} }
Yukarıdaki sözdizimi aşağıdaki terimleri içerir:
- Bir “fonksiyon” kelimesi
- Tarafınızdan verilen bir “ad”
- Bir “kapsam” (isteğe bağlıdır)
- Herhangi bir sayıda adlandırılmış “parametre”
- Süslü parantez
{}
içine alınmış bir veya daha fazla PowerShell ifade listesi yani komutu.
PowerShell Fonksiyon Kapsamı
- Bir fonksiyon, oluşturulduğu kapsamda bulunur ve çalışır.
- Fonksiyon bir script içindeyse, yalnızca bu script içindeki ifadeler için kullanılabilir.
- Global kapsamda bir fonksiyon tanımlandığında, bu fonksiyon diğer fonksiyonlarda, script ve komut satırında kullanılabilir.
Basit PowerShell Fonksiyonlar
Aşağıdaki örnek, bir PowerShell dilinde basit bir fonksiyonun nasıl oluşturacağını açıklar:
function <fonksiyon-adi> { kod-1 kod-2 kod-N }
Fonksiyonda birden çok ifadeyi ayırmak için her biri ayrı satırda yazılmalıdır.
Fonksiyonu kullanmak için, fonksiyon adı yazılarak çağrılır:
fonksiyon-adi
Örnek:
function Mesaj { echo "aktifdizin sitesine hoşgeldiniz!" echo "Aktif Dizin Servisi" }
Yukarıdaki fonksiyonun çıktısını almak için PowerShell konsoluna aşağıdaki komutun yazılması yeterlidir:
Mesaj
Çıktı:
aktifdizin sitesine hoşgeldiniz! Aktif Dizin Servisi
Gelişmiş PowerShell Fonksiyon Kullanımı
Gelişmiş fonksiyonlar, bir cmdlet ile benzer işlemleri gerçekleştirebilen fonksiyonlardır. Bu fonksiyonlar, kullanıcı hazır ve derlenmiş bir cmdlet kullanmak istenmediği durumlarda kullanılır.
Derlenmiş bir cmdlet ve gelişmiş bir fonksiyon kullanma arasındaki temel fark; derlenmiş bir cmdlet, sadece .NET Framework sınıfları ile yazılabilirken, gelişmiş fonksiyonlar PowerShell kod dilinde yazılmıştır.
Aşağıdaki örnekte PowerShell dilinde gelişmiş fonksiyonların nasıl yazılacağı açıklanmaktadır:
function Selamlama-Gonder { [CmdletBinding()] Param ( [ Parameter (Mandatory = $true)] [string] $Ad ) Process { Write-Host ("Merhaba " + $Ad + "!") } }
Yukarıdaki örneğin çıktısını görebilmek için PowerShell konsoluna aşağıdaki komut yazılmalıdır:
Selamlama-Gonder
Çıktı:
cmdlet Selamlama-Gonder at command pipeline position 1 Supply values for the following parameters: Ad: Ahmet Elibol Merhaba Ahmet Elibol!
PowerShell Fonksiyon Örnekleri
Örnek 1:
Aşağıdaki örnek, geçerli tarihi döndüren basit bir fonksiyondur. Bu örnekte PowerShell return kullanımı da görülebilir:
function Get-DateTime { return Get-Date }
Yukarıdaki örneğin çıktısını görebilmek için PowerShell konsoluna aşağıdaki komut yazılmalıdır:
Get-DateTime
Çıktı:
Saturday, February 8, 2020 12:46:56
Örnek 2:
Aşağıdaki örnek, bir parametreyi kabul eden ve bu parametre üzerinden bir değer döndüren bir fonksiyondur.
function Kare-Al([int]$x) { $sonuc = $x * $x return $sonuc }
Yukarıdaki örnekte kullanılmak üzere kullanıcıdan girdi olarak bir sayı almak için aşağıdaki komut yazılır:
$x = Read-Host 'Bir Sayı Giriniz'
Çıktı:
Bir Sayı Giriniz: 8
Fonksiyondan return ile dönen değeri, bir değişkende saklamak için aşağıdaki komut yazılır:
$kare = Kare-Al $x
Aşağıdaki komut sonucu gösterir:
Write-Output "$x * $x = $kare"
Çıktı:
2 * 2 = 4
Tümü:
function Kare-Al([int]$x) { $sonuc = $x * $x return $sonuc } $x = Read-Host 'Bir Sayı Giriniz' $kare = Kare-Al $x Write-Output "$x * $x = $kare"
Çıktı:
PS C:\Users\ahmet> function Kare-Al([int]$x) { $sonuc = $x * $x return $sonuc } $x = Read-Host 'Bir Sayı Giriniz' $kare = Kare-Al $x Write-Output "$x * $x = $kare" Bir Sayı Giriniz: 4 4 * 4 = 16 PS C:\Users\ahmet>
PowerShell Fonksiyon
Makalesine ve örneklere zaman ayırdığınız için teşekkür ederiz. Fonksiyonlar içinde kullanmak üzere PowerShell If Kullanımı makalesi de ilginizi çekebilir. PowerShell hakkında daha fazla bilgi için Microsoft sitesi ziyaret edilebilir.