Windows PowerShell – Enumerating Object – Devam – Bölüm 8. Bu bölümde datanın Pipeline üzerinden nasıl Bind edildiği konusu üzerinde duracağız. Muhtemelen bundan sonraki makale de aynı konunun devamı niteliğinde olacak.
Powershell mimarisinde pipe objeleri bir cmdlet’ten diğerine kolaylıkla transfer edilebilir. Bu işleme Pipeline parameter Binding denir.
Bu işlem yapılırken temelde iki teknik kullanılır.
- ByValue : Her zaman ilk olarak denenen Binding metodudur.
- ByPropertyname : Eğer ByValue metodu hata alırsa denenecek olan metodudur.
ByValue Tekniği ile Data Aktarılması
Pipeline üzerinden data transferi yapılırken kullanılan ilk tekniktir.
Bu konuyu anlatırken bir örnek üzerinde ilerlemekte fayda var.
Get-Service komutu aşağıdaki gibi çalıştırıldığında string olarak verilen servis isimlerinin Get-Service cmdlet’i ile direk Bind olduğu görülür.
Resim-1
Komut aşağıdaki şekildeki gibi incelendiğinde Pipeline içerisinde string olarak verilen servis isimlerinin şekildeki gibi görünmez olan –Name Property’si ile Bind olduğu görülmektedir.
Resim-2
-Name isimli Property’nin Pipeline’dan data kabul ettiği tekniği görüntülemek için aşağıdaki komutu çalıştıralım.
Resim-3
Şekildeki numaralı bölümler incelenecek olursa,
1 numaralı bölüm Get-Service komutunun –Name parametresine String array olarak Pipeline üzerinden obje kabul ettiğini gösterir.
2 numaralı bölümdeki “Accept Pipeline input” Pipeline üzerinden obje kabul edilip edilmeyeceğini, edilirse hangi teknikle edileceğini gösterir.
Burada Get-Service cmdlet’i için iki teknikte kullanılabilir durumda. (ByValue ve PyPropertyName)
Get-Process cmdlet’inin Name Property’si için aynı komut çalıştırıldığında Teknik olarak ByValue kullanılmadığı görünür.
Resim-4
Bu durumda Get-Process komutuna Pipeline üzerinden direkt olarak String değer verildiğinde komut aşağıdaki gibi hata verecektir.
Resim-5
Bunun nedeni Get-process cmdlet’inin Pipeline üzerinden sadece PropertyName olarak değer kabul etmesidir. Yani Pipeline üzerinden Name Property’sine sahip bir obje gelmelidir. Get-Process cmdlet’i ancak gelen bu objenin Name Property’si ile Bind olabilir.
Özetle belli komutlar ByValue tekniğini kullanıp Pipeline üzerinden direkt olarak değer kabul edebilirler. Etmeyenlerde olabilir. Bunlar direkt olarak gelecek obje üzerinde aynı isimde Property ararlar.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
Microsoft DMOC
TAGs : powershell, Microsoft powershell, Windows powershell, powershell nedir, powershell kullanimlari, powershell eğitim, powershell eğitim seti, powershell Enumerating Object, Enumerating Object nedir, Enumerating Object powershell