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.

↑
Mobil sürümden çık