1. Ana Sayfa
  2. Microsoft PowerShell
  3. Sistemciler İçin PowerShell Öğreniyorum – Pipeline – Bölüm 9

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


Ruijie Teknoloji Günü

Bu bölümde 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 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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Ruijie Teknoloji Günü
Yorum Yap

Yazar Hakkında

İstanbul doğumlu ve Marmara Üniversitesi mezunudur. Mezuniyet sonrası kariyerine Bilge Adam Bilişim Teknolojileri Akademisi'nde Microsoft Certificated Trainer, Consultant ve Senior Consultant pozisyonlarında ve Data Market bünyesinde Danışmanlık Birim Müdürü olarak görev yapmaya başlamıştır. Microsoft bünyesinde tüm MEA bölgesindeki ülkelerde System Center ve Infrastructure projelerinden sorumlu Consultant olarak görev yaptıktan sonra, Aralık 2012 itibari ile KoçSistem bünyesinde danışman olarak çalışmaya başlamıştır. System Center Configuration Manager ürünü için 2010 ve 2011 yıllarında MVP (Microsoft Most Valuable Professional) ünvanı alan Anıl Erduran, 2013 yılında System Center Cloud & Datacenter Management alanında MVP seçilmiş ve uzun yıllar bu ünvanı korumayı başarmıştır. Şu anda Londra'da yaşayan Anıl Erduran AWS üzerinde çalışan Microsoft iş yüklerinden sorumlu EMEA Senior Partner Solutions Architect olarak çalışmaktadır.

Yorum Yap

Yorumlar (1)

  1. 9 ay önce

    Anıl bey öncelikle akıcı ve anlaşılır yazı dizisi için teşekkürlerimi sunuyorum. 9 bölümlük yazı dizisini iki gündür uygulayarak okudum. Powershell’e giriş yapmış oldum. Sistem ve Ağ uzmanları için bundan sonraki adımda, çalışmalara nasıl devam edilmesini önerirsiniz?
    Saygılarımla.