PowerShell

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.

Daha Fazla Göster

Ahmet Elibol

Üniversite eğitimini Kimya ve İşletme bölümlerinde tamamlayan Ahmet Elibol, yüksek lisans eğitimini de İşletme (Master of Business Administration - MBA) üzerinde tamamlamıştır. 1999 yılından bu yana bilişim sektöründe bulunmaktadır ve şu anda Rönesans Holding şirketinde CIO (Chief Information Officer) pozisyonunda görev yapmaktadır.  Ahmet Elibol, profesyonel kariyerine aldığı pascal ve delphi ile yazılım mühendisliği eğitimiyle başlamıştır. 2004 yılından sonra ilgi ve uzmanlık alanlarını Microsoft Sunucu Sistemleri, Sistem Programlama ve Bilgi Güvenliği konularında güncellemiştir. Yazar 4 yıl kadar bir akademide Sistem Mühendisliği eğitimleri vermiştir. Yazar hobi amaçlı programlama, yapay zeka, makine öğrenmesi, yapay sinir ağları, görüntü işleme ve nesnelerin interneti konularında çalışmaktadır. İngilizce, Rusça dillerini bilen Ahmet Elibol MCT, MCITP, MCTS, MCSE, MCSA vb. uzmanlık sertifikalarına sahiptir ve Bilgisayar Mühendisliği yüksek lisansına devam etmektedir.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu