PowerShell'de Geek Okulu Öğrenme Biçimlendirme, Filtreleme ve Karşılaştırma
Geek Okulu'nun bu sayısında, Boru Hattı'ndaki nesneleri biçimlendirme, filtreleme ve karşılaştırmaya bakıyoruz..
Serideki önceki makaleleri okuduğunuzdan emin olun:
- PowerShell ile Windows'u Nasıl Otomatikleştireceğinizi Öğrenin
- PowerShell'de Cmdlet'leri Kullanmayı Öğrenme
- PowerShell'de Nesnelerin Nasıl Kullanılacağını Öğrenme
Ve tüm hafta boyunca dizinin geri kalanı için bizi izlemeye devam edin.
Varsayılan biçimlendirme
PowerShell ile ilk başladığımda her şeyin sihir olduğunu düşündüm, ama gerçek şu ki, kaputun altında neler olup bittiğini anlamak biraz zaman alıyor. Aynısı PowerShell formatlama sistemi için de geçerlidir. Aslında, Get-Service cmdlet'ini çalıştırırsanız, üretilen çıktı yalnızca 3 özellik gösterir: Durum, Ad ve Görünen Ad.
Ancak Get-Service’i Get-Member’e bağlarsanız, ServiceController nesnelerinin yalnızca bu üç özellikten çok daha fazlasına sahip olduğunu görürsünüz.?
Cevap, yerleşik cmdlet'lerin çoğunun çıktılarını nasıl gösterdiğini tanımlayan gizli bir dosya içindedir. Anlamak için, kabuğa aşağıdakini yazın ve enter tuşuna basın..
not defteri C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml
Not Defteri'nin Bul işlevini kullanırsak, ServiceController türünü arayarak Get-Service cmdlet'inin çıkışını ayrıntılandıran bölüme hızla geçebiliriz.
Birdenbire, kaputun altında PowerShell’in, Boru Hattı’ndaki ServiceController türündeki nesneleri biçimlendirdiğini ve üç sütunlu bir tablo oluşturduğunu görebilirsiniz: Durum, Ad ve EkranAdı. Ancak, uğraştığınız tür o dosyada bir girdi veya bu konuda başka bir biçim dosyasında değilse ne olur? O zaman, aslında oldukça basit. Boru hattından çıkan nesne 5 veya daha fazla özelliğe sahipse, PowerShell nesnenin tüm özelliklerini bir listede görüntüler; 5'ten az özelliğe sahipse, bunları bir tabloda görüntüler..
Verilerinizi Biçimlendirme
Bir nesnenin veya türün varsayılan biçimlendirmesinden memnun değilseniz, kendi biçimlendirmenizi alabilirsiniz. Bunu yapmak için bilmeniz gereken üç cmdlet var.
- Biçim-List
- Biçim-Tablo
- Biçim-Geniş
Biçim-Geniş basit bir nesne koleksiyonunu alır ve her nesnenin tek bir özelliğini görüntüler. Varsayılan olarak, bir ad özelliği arar; nesneleriniz bir ad özelliği içermiyorsa, özellikler alfabetik olarak sıralandıktan sonra nesnenin ilk özelliğini kullanır..
Hizmet Al | Biçim-Geniş
Gördüğünüz gibi, hangi iki özelliği de kullanmak istediğinizi ve kaç sütun görüntülemek istediğinizi belirtebilseniz de, varsayılan olarak iki sütuna sahiptir..
Hizmet Al | Biçim-Geniş-Özelliği DisplayName-Sütun 6
Bir şey varsayılan olarak tablo olarak biçimlendirilmişse, Biçim Listesi cmdlet'ini kullanarak her zaman liste görünümüne geçirebilirsiniz. Get-Process cmdlet'inin çıktısına bir göz atalım.
Bu tablo görünümü aslında bu tür bilgilere çok iyi uyuyor ancak liste şeklinde görüntülemek istediğimizi düşünelim. Tek yapmamız gereken onu boruya çekmek Biçim-List.
Get-Process | Biçim-List
Gördüğünüz gibi listede varsayılan olarak yalnızca dört öğe görüntüleniyor. Nesnenin tüm özelliklerini görüntülemek için joker karakter kullanabilirsiniz.
Get-Process | Biçim Listesi - Özellik *
Alternatif olarak, sadece istediğiniz özellikleri seçebilirsiniz.
Get-Process | Biçim Listesi - Özellik Adı, kimliği
Biçim-Tablo, Öte yandan, verileri alır ve bir tabloya dönüştürür. Get-Process'ten elde ettiğimiz veriler zaten bir tablo biçiminde olduğundan, tabloda görüntülenmesini istediğimiz özellikleri kolayca seçmek için kullanabiliriz. Tüm verileri tek bir ekrana sığdırmak için AutoSize parametresini kullandım.
Get-Process | Biçim-Tablo adı, id -AutoSize
Filtreleme ve Karşılaştırma
Nesne tabanlı bir boru hattı kullanmanın en iyi yanlarından biri, Where-Object cmdlet'ini kullanarak herhangi bir aşamadaki nesneleri boru hattından filtreleyebilmenizdir..
Hizmet Al | Where-Object $ _. Status -eq “Çalışıyor”
Nerede nesneyi kullanmak gerçekten çok basittir. $ _, filtrelemek istediğiniz bir özellik seçebileceğiniz mevcut boru hattı nesnesini temsil eder. Burada, yalnızca Status özelliğinin Çalışmaya eşit olduğu nesneleri tutuyorlardı. Filtreleme komut dosyası bloğunda kullanabileceğiniz birkaç karşılaştırma operatörü vardır:
- eq (Eşit)
- neq (Eşit Değil)
- gt (Büyüktür)
- ge (Büyük veya Eşittir)
- lt (Daha Az)
- le (Daha Az veya Eşit)
- beğen (Wildcard String Match)
About_comparison kavramsal yardım dosyasında tam liste ve daha fazla bilgi görüntülenebilir, ancak Where-Obeject sözdizimine alışmak biraz zaman alabilir. Bu seferlik hepsi bu!