PowerShell Referans Tipi Değişken Kullanımı
PowerShell Başvuru Türü, PowerShell Reference Variable, PowerShell [ref] Kullanımı, PowerShell Referans Tipi
PowerShell Referans Tipi Değişken Kullanımı
Bu PowerShell eğitiminde PowerShell referans tipi değişken yani PowerShell başvuru tipi değişkenler tartışılacaktır. “PowerShell dilinde bir referans türü değişken nedir? PowerShell fonksiyonlarında başvuru tipi değişken nasıl kullanılır? Değişkenler bir fonksiyona referans olarak nasıl aktarılır?” gibi sorulara yanıtlar aranacaktır. Ayrıca PowerShell dilinde referans parametreler yoluyla bir fonksiyondan değerlerin nasıl geri döndürüleceği de tartışılacaktır.
PowerShell referans tipi değişken nedir?
PowerShell dilinde, bir fonksiyonun kendisine iletilen bir değişkenin değerini değiştirmesine izin vermek için PowerShell referans tip değişkenler kullanılır. PowerShell referans tip değişkenlerin diğer adı PowerShell başvuru tip değişkenlerde denir.
PowerShell referans tipi değişken nasıl oluşturulur ve kullanılır?
PowerShell dilinde, parametreleri fonksiyonlara aktarırken çoğunlukla referans değişkenler kullanılır. Bir değişken fonksiyona değere veya referans değerine göre iletilebilir. Bir değişken değer olarak iletilirken, aslında verilerin bir kopyası iletilir. Böylece değer her zaman fonksiyonun kapsamı dışında kalır.
Aşağıda parametre olarak standart değer türü alan bir PowerShell fonsiyonu verilmiştir:
Function Hesapla($sayi) { $sayi = 50 } $degisken = 100 Hesapla -sayi $degisken Write-Host $degisken
Çıktı kontrol edildiğinde, $degisken değeri fonksiyon kapsamının dışında 100 olarak görüntülenir.
PS C:\Users\ahmet> Function Hesapla($sayi) { $sayi = 50 } $degisken = 100 Hesapla -sayi $degisken Write-Host $degisken 100 PS C:\Users\ahmet>
Ancak parametre PowerShell referans tipi olarak iletilirse değişkenin değeri değişecektir.
Değeri PowerShell referans türü olarak iletmek için, [ref] anahtar sözcüğü kullanılarak iletilmesi gerekir.
Function Hesapla([ref]$sayi) { $sayi.Value = 50 } $degisken = 100 Hesapla -sayi ([ref]$degisken) Write-Host $degisken
Şimdi değişkenin değeri kontrol edilirse, değerin değiştiği görülecektir.
PS C:\Users\ahmet> Function Hesapla([ref]$sayi) { $sayi.Value = 50 } $degisken = 100 Hesapla -sayi ([ref]$degisken) Write-Host $degisken 50 PS C:\Users\ahmet>
Birden çok parametrenin PowerShell referans türü değişken olarak iletilmesi
PowerShell dilinde, birden fazla PowerShell referans türü parametre olarak iletilebilir. Aşağıdaki örnekte, PowerShell fonksiyon için referans değişkeni olarak, iki string tipi değişkenin iletildiği görülebilir.
Function IsimGetir([ref]$ad, [ref]$soyad) { $ad.Value = "Ahmet" $soyad.Value = "Elibol" } $adi = "Mercan" $soyadi = "Yitik" IsimGetir -ad ([ref]$adi) -soyad ([ref]$soyadi) Write-Host $adi" "$soyadi
Script çalıştırdıktan sonra, PowerShell değişken değerlerinin değiştiği görülebilir.
PowerShell “Reference type is expected in argument” hatası
PowerShell referans tip değişkenler ile çalışırken aşağıdaki kod ile birlikte aşağıdaki hata alınabilir.
Kod:
Function Hesapla([ref]$sayi) { $sayi.Value = 50 } $degisken = 100 Hesapla -sayi [ref]$degisken Write-Host $degisken
Çıktı:
PS C:\Users\ahmet> Function Hesapla([ref]$sayi) { $sayi.Value = 50 } $degisken = 100 Hesapla -sayi [ref]$degisken Write-Host $degisken Hesapla : Cannot process argument transformation on parameter 'sayi'. Reference type is expected in argument. At line:7 char:15 + Hesapla -sayi [ref]$degisken + ~~~~~~~~~~~~~~ + CategoryInfo : InvalidData: (:) [Hesapla], ParameterBindingArgumentTransformationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Hesapla 100 PS C:\Users\ahmet>
Hesapla : Cannot process argument transformation on parameter ‘sayi’. Reference type is expected in argument.
At line:7 char:15
+ Hesapla -sayi [ref]$degisken
+ ~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Hesapla], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Hesapla
Çözüm:
Hata referans parametresini fonksiyona gönderme şeklinden kaynaklanmaktadır. Burada parantez () içine referans türü değişken adının eklenmesi gerekir.
Makaleyi okuduğunuz için teşekkür ederiz. PowerShell ile ilgili daha fazla bilgi için Microsoft sitesi takip edilebilir. Soru ve önerilerinizi aşağıdaki formu kullanarak bize iletebilirsiniz.