Sistemciler İçin PowerShell Öğreniyorum – Pipeline – Bölüm 9

Bu bölümde Pipeline kullanım örneklerine devam edilecektir.

Get-Item metodunun Get-ChildItem metodundan temel farkı, yalnızca dosya sistemi altında listeleme yapmak yerine registry ve benzeri dizinler altında da sorgulama gerçekleştirebilmesidir. Bu metot kullanılarak belirli bir dizin altındaki belirli uzantıya sahip dosyalar listelenebilir ve pipeline içerisinden geçirilerek istenilen Sütun değerleri üzerinde işlemler gerçekleştirilebilir.


Resim-1

Aşağıdaki örnekte, bir dizin altındaki tüm .txt uzantılı dosyalar listelenmiş, bunların içerisinde yalnızca belirli bir boyutun üzerindekiler filtrelenmiş ve toplam değer anlamlı bir ifade ile çıktı olarak elde edilmiştir. Aşağıda bu scriptin oluşturulması için gereken adımlar listelenmiştir.


Resim-2


Resim-3

Yukarıdaki şekilde görüldüğü gibi “C:\Text Dosyalarım\” dizini altında .txt uzantısına sahip tüm dosyalar, çeşitli özellikleri ile birlikte çıktı olarak elde edilmiştir.


Resim-4

Pipeline kullanımı ile ilgili dizindeki .txt uzantılı dosyalar hafızaya alınmış ve belirlenen kriterler dahilinde filtrelenmeye başlanmıştır. Buradaki filtreleme yönetimi, tüm dosyaların Length sütunlarının okunması ve pipeline dışarısına yalnızca boyutu 40 Kb’dan büyük olan dosyaların çıkmasıdır.


Resim-5

Görüldüğü gibi 40 Kb’dan büyük toplam üç dosya Pipeline kullanımı ile listelenmiştir.

Bir sonraki PipeLine içerisinde , Measure-Object komut satırı , bir önceki pipeline içerisinden çıkan çıktıların Length özelliklerinin toplamının –sum parametresi ile hesaplanması için kullanılmaktadır.


Resim-6


Resim-7

Measure-Object metodu PowerShell içerisinde Count, Average, Sum, Minimum ve Maximum değerlerine göre bir nesne için istatiksel veriler oluşturmak amacıyla kullanılmaktadır. Yukarıdaki örnekte, son pipeline dâhilinde yalnızca 40 Kb’dan fazla boyutu olan nesneler için Length sütunundaki değerler toplama işlemine (SUM) dâhil edilmiştir.

Son çıktıda 40 Kb’dan fazla olan .txt uzantılı dosyaların toplam boyutu görülmektedir. ( 555662 Byte)

İstenildiği takdirde PowerShell ile elde edilen çıktılar üzerinde, istenilen değişiklikler gerçekleştirilebilir. Örneğin üzerinde bazı matematiksel işlemler gerçekleştirilerek, konsolda daha anlamlı verilerin yer alması sağlanabilmektedir.

Çıktı üzerinde daha rahat çalışabilmek adına, son pipeline sonucunda elde edilen değer bir değişkene atanabilir.


Resim-8

Bu değişken içerisindeki 555662 Byte değerinin daha anlaşılır görüntülenmesini sağlamak PowerShell formatları sayesinde mümkündür.

Bilgisayarlar kendi aralarında haberleşmek istediklerinde, okunuşu kolay olan, görüntüsü daha anlaşılır olan formatları seçmek yerine standart kurallar çerçevesinde ilerlerler. Bu sebeple bir dosyanın boyutunu Byte cinsinden saklamak, makine dilinde oldukça kullanışlıdır. Ancak son kullanıcı gözünde değişik varyasyonlar kullanılarak bu değerler daha okunabilir, anlaşılabilir değerlere dönüştürülebilir. Örneğin 555,662 şeklinde, yalnızca virgül ile basamakların ayrıldığı bir yazım biçimi bile okuyucu tarafından daha hoş karşılanmaktadır.

PowerShell bu noktada Visual Basic’de olduğu gibi tümleşik gelen bir numara formatlama komut satırına yâda fonksiyonuna sahip değildir. Bunun yerine bir çok noktada paralel çalıştığı .NET Framework’ünü kullanmaktadır. Ufak bir örnek vererek açıklamak gerekirse;


Resim-9

Yukarıda $No değişkenine 10 haneli bir numara değeri atanmıştır.

Bir sonraki satırda;


Resim-10

Komutunu çalıştırdığınızda çıktı aşağıdaki hale gelecektir.


Resim-11

Burada “{0:N0}” ile gerçekleştirilen formatlama incelenecek olursa;

  • 0 değeri ile formatlanacak öğenin indeks numarası belirtilmektedir.
  • N değeri uygulanacak format değerini belirtmektedir. N’nin açılımı “Numeric” tir. Diğer format değerleri aşağıdaki tabloda görülebilir.


Resim-12

  • Son bölümde bulunan 0 değeri formatlanan numaraya sağ baştan eklenecek 0 değerlerini belirtmektedir.
  • F parametresi ise –format parametresinin kısaltılmış halidir.

Bu takdirde;


Resim-13

Formatı aşağıdaki gibi bir çıktı elde edilmesini sağlayacaktır.


Resim-14

Bu kısa bilgiden sonra artık yukarıda elde edilen Byte değeri üzerinde işlem yapılmaya başlanabilir.

Formatlama işleminde öncelikle formatlama tipi belirtilmelidir. Yukarıdaki örnek için “{0:N2}” kullanılabilir.

Önceki bölümlerde değinildiği gibi PowerShell ile matematiksel işlemler rahatlıkla gerçekleştirilebilir. Aynı zamanda PowerShell matematik işlemler sırasında KB, MB, GB gibi önceden tanımlı değerlere sahiptir. Bu takdirde elde edilen değer 1 Mb değerine bölündüğünde gerekli matematiksel işlem gerçekleştirilerek istenilen çıktı elde edilebilir.


Resim-15

Yukarıda görüldüğü gibi, komuta eklenen + ” MB” ile çıktıya metin mesajı da eklenerek, son çıktının “0,53 MB” gibi oldukça okunabilir bir değere çevrilmesi sağlanmıştır.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Yazı gezinmesi

Mobil sürümden çık