PowerShell Öğreniyorum – Pipeline – Bölüm 8

Yazı dizisinin bu bölümünde PowerShell içerisinde Pipeline kullanımı incelenecektir.

Aslında PowerShell içerisinde tanımlı olmayan ancak PowerShell içerisinde Pipeline kullanımının mantığını kavrayabilmek için aşağıdaki örneği inceleyelim.


Adım adım süreci izleyelim.


Get-Araba metodu ile fabrika dâhilinde bulunan tüm arabaların listesi çekilmiştir. Dikkat ederseniz sadece Get-Araba metodu ile herhangi bir kıstas belirlenememekte, elde edilen nesneler üzerinde değişiklik gerçekleştirilememektedir. Bu sebeple | simgesi ile pipeline kullanımı başlatılmıştır.


İlk pipeline ile birlikte istenilen kıstas belirlenmiştir. Get-Araba metodu ile elde edilen tüm araçların içerisinden yalnızca kırmızı renge sahip olanların pipeline dışarısına çıkması, geri kalanların elenmesi sağlanmıştır.

İstenilen her değişiklik için pipeline kullanmaya devam edilebilmektedir.


Bir sonraki pipeline içerisine sadece Kırmızı renge sahip olan araçların geldiği unutulmamalıdır. Kırmızı araçlardan oluşan bu nesne grubunda ise, yapılacak değişiklik ile son ürün bir kez daha düzenlenebilir. Sort-Object metodunu kullanarak, sınırlandırılmış bu nesne grubunun Kilometre değerlerine göre sıralanması sağlanmıştır.

Eğer gerçek hayatta bu şekilde bir script çalıştırılabilseydi, aşağıdakine benzer çıktılar elde edilirdi;


Görüldüğü gibi son pipeline sonucunda sadece kırmızı renge sahip olan ve kilometre değerlerine göre azdan çoğa sıralanmış bir liste elde edilmiştir.

Buna benzer şekilde, gerçek PowerShell metodları kullanılarak, başta elde edilen nesneler üzerinde modifikasyonlar gerçekleştirilerek istenilen çıktılar elde edilebilir. Bu bölümde var olan PowerShell Scriptleri ile pipeline kullanım örnekleri üzerinde durulacaktır.

1.Örnek

Get-Service metodu ile yerel makine üzerinde çalışan tüm servislerin listesi alınabilir. Pipeline kullanımı ile tek bir script satırı kullanılarak, yalnızca çalışan servislerin listesinin alınıp, bu listenin içerisindeki nesnelerin isim sütunlarına göre alfabetik sıralanmasının sağlanması için aşağıdaki adımlar izlenmiştir.



  • Get-Service ile yerel makine üzerinde çalışan tüm servislerin listesi alınmış ancak shell, pipeline kullanımını fark ettiği için, oluşturulan nesneler çıktı olarak verilmek yerine hafızada tutulmuştur.
  • İlk pipeline kullanımı ile hafızada tutulan tüm bu servisler içerisinde yalnızca “Status” sütunu “Running” olanların seçilmesi ve oluşan yeni nesnelerin diğer pipeline içerisine aktarılması sağlanmıştır.
  • Çıktıdan önceki son pipeline kullanımı ile, yalnızca “Running” durumda olan servisler “Name” sütunları dikkate alınarak alfabetik olarak dizilmiştir. Bu noktadan sonra başka bir pipeline kullanımı olmadığı için PowerShell konsolu, son düzenlenmiş hali çıktı olarak vermektedir.

2.Örnek

PowerShell ile Windows İşletim Sistemi altında yer alan işlemlerin listeleri alınabilir ve istenilen işlemler Kill komutu ile de sonlandırılabilir.

Kimi zaman arka tarafta açık olan Internet Explorer pencereleri, hafızada kapladıkları yer sebebiyle paralel ilerleyen operasyonları sıkıntıya düşürebilecek seviyeye gelebilir. Bu noktada Grafik Kullanıcı Arabirimi kullanılarak bu pencereler tek tek sonlandırılabilir. Ancak hazırlanan basit bir PowerShell komut satırı ile pipeline kullanımına dikkat edildiği takdirde, aynı işlem çok kısa zaman içerisinde gerçekleştirilebilir. Aşağıdaki örnekte adım adım benzer bir scriptin hazırlanması incelenmektedir.

Get-Process metodu kullanılarak lokal makine üzerindeki tüm işlemlerin listesi alınabilmektedir.


Scriptin devamında istenen, hafızaya alınan tüm işlemler içerisinde yalnızca Internet Explorer pencerelerini yöneten işlemlerin çekilmesidir.Bu noktada pipeline kullanımı sağlanarak ilk kriter belirlenir.



Görüldüğü gibi Get-Process ile hafızaya alınan ve pipeline içerisine gönderilen tüm işlemler içerisinden, “Name” sütunu “iexplore” olan işlemler ayıklanmıştır. Geriye kalan tüm diğer işlemler elenmiştir.


Son pipeline içerisinde bulunan nesneler, yalnızca internet explorer pencerelerinin yönetiminden sorumlu olan iexplore.exe'dir. Son olarak kıstas dâhilinde filtrelenen tüm bu işlemlerin sonlandırılması için kill metodu kullanılır.


Pipeline kullanımı ile birlikte yukarıdaki script çalıştırıldığında PowerShell, varolan tüm Internet Explorer pencerelerini herhangi bir uyarı çıktısı vermeden sonlandıracaktır.

essay editing services

765qwerty765