PowerShell ByValue ve ByPropertyName Kullanımı

Selamlar Arkadaşlar bu makalemde sizlere PowerShell’de bir komutu PipeLine yardımı ile arka planda ByValue ve ByPropertyName teknikleri ile nasıl çalıştırılabildiğini anlatacağım.

 Normal şartlarda PowerShell’de bir komut ile elde ettiğimiz Collection’ı PipeLine’dan sonraki komut ile üzerlerinde işlem yaparız. Bu işlemleri yaparken bazen komutun çalışmadığını görürüz bunun nedeni ise PipeLine’dan önceki alandan elde edilen Collection’ın türünden dolayıdır.

Yukarıda yazılmış olan kodları inceleyelim.

> Get-Service Spooler,MpsSvc | Stop-Service
Bu komut sayesinde Get-Service ile Spooler ve MpsSvc komutlarının Collection’ı oluşturulur ve Stop-Service Kod’u ile durdulur. Bu bir komut sonucu oluşturulan Collection verisidir. Bu kod ise ByPropertyName kullanımına örnektir.

> “Spooler” , “MpsSvc” | Start-Service
“Spooler” , “MpsSvc” değerleri ile Start-Service komutu çalıştırıldığında bunların bir Service olduğu anlaşılır ve Başlatma işlemi yapılır. Bu kod ByValue kullanımına örnektir.

Komutun bu özelliğini nereden öğrendiniz derseniz en son çalıştırmış olduğumuz Start-Service komutun Help’i yardımıyla bunu öğrenebilirsiniz.

> Get-Help Start-Service –Full
Bu komut çalıştırılır ve –Name özelliğini kullandığımızdan dolayı –Name <String[]> alanına geliriz. Burada Accept PipeLine input kısmında ki ByPropertyName ve ByValue değerleri ile kod satırında Collection ya da Değer gelmesi ile kodun başarılı bir şekilde çalışabileceğini göstermektedir.

ByPropertyName = Bir kod sonucunda Kolon başlığı olan bir Collection dizisine verilen addır.

ByValue = Sadece girilen değer ile işlem yapılabilir anlamına gelmektedir.

> Get-Process Win32Calc,Notepad | Stop-Process
Komut yardımıyla Process Collection’nında bulunan işlemleri Stop-Process kodu ile kapatıyoruz.

> “Win32Calc” , “Notepad” | Stop-Process
Daha sonra aynı işlemi ByValue ile yapmaya çalıştığımızda Hata veriyor.

> Get-Help Stop-Process –Full
Bunun nedeni yukarıdaki kodu çalıştırdığınızda –Name <String[]> alanında bulunan Accept PipeLine Input alanında yazmaktadır. İşlem sadece ByPropertyName ile çalışmaktadır.

Bir sonraki makalemde görüşmek üzere kolaylıklar dilerim.

Bir Cevap Yazın