Veri seçme
Komut çalıştırmak güçlü olabilir, verileri yerel makinenizden veya ağ üzerinden alabilirsiniz. Daha da etkili olmak için, istediğiniz verileri nasıl alacağınızı öğrenmeniz gerekir. Komutların çoğu nesneler üzerinde giriş veya çıkış olarak ya da her ikisi olarak çalışır. Nesnelerin özellikleri vardır ve bu özelliklerin bir alt kümesine erişmek ve bunları bir raporda sunmak isteyebilirsiniz. Verileri bir veya daha fazla özelliğe göre sıralamak da isteyebilirsiniz. Ama oraya nasıl varacaksınız?
Çıktıyı incelemek için Get-Member kullanma
komutun sonuçlarını öğesine Get-Member
Get-Member
geçirdiğinizde, bir nesne hakkında aşağıdaki gibi bilgiler döndürür:
- Get-Member'a geçirilen nesnenin türü.
- Değerlendirilebilecek nesnenin Özellikleri.
- Yürütülebilecek nesnenin Yöntemleri.
komutunu Get-Process
çalıştırarak Get-Member
bu gerçeği gösterelim.
Get-Process | Get-Member
Kanalı |
nasıl kullandığınızı ve çağrısı Get-Member
yaparak aslında zaten bir işlem hattı oluşturduğunuzu unutmayın. Önceki deyimden çıktının ilk birkaç satırı şöyle görünür:
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
NPM AliasProperty NPM = NonpagedSystemMemorySize64
PM AliasProperty PM = PagedMemorySize64
SI AliasProperty SI = SessionId
VM AliasProperty VM = VirtualMemorySize64
WS AliasProperty WS = WorkingSet64
...
Çıkış, komutun döndürdüğü Get-Process
nesne türünü gösterir (System.Diagnostics.Process
). Yanıtın geri kalanında nesne üyelerinin adı, türü ve tanımı gösterilir. İşlem hattında başka bir komutla sığdırmak Get-Process
istiyorsanız, bunu ile Get-Member
eşleştirmenin iyi bir ilk adım olduğunu görebilirsiniz.
Select-Object
Varsayılan olarak, ekrana çıkış yapacak bir komut çalıştırdığınızda PowerShell komutunu Out-Default
otomatik olarak ekler. Çıkış verileri bir nesne koleksiyonu olduğunda, PowerShell nesne türüne bakarak bu nesne türü için kayıtlı bir görünüm olup olmadığını belirler. Bir görünüm bulursa bu görünümü kullanır.
Görünüm genellikle bir nesnenin tüm özelliklerini içermez çünkü ekranda düzgün görüntülenmez, bu nedenle görünüme yalnızca en yaygın özelliklerden bazıları eklenir.
Kendi özellik listenizi kullanarak Select-Object
ve seçerek varsayılan görünümü geçersiz kılabilirsiniz. Tabloyu istediğiniz gibi görüntülemek için bu özellikleri Format-Table
veya Format-List
adresine gönderebilirsiniz.
üzerinde zsh
çalıştırma Get-Process
işleminin sonucunu göz önünde bulundurun:
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
0 0.00 0.01 0.38 644 620 zsh
0 0.00 0.01 0.38 727 727 zsh
0 0.00 0.01 0.38 731 731 zsh
0 0.00 0.01 0.38 743 743 zsh
0 0.00 0.01 0.38 750 750 zsh
0 0.00 0.88 0.91 15747 …47 zsh
0 0.00 0.01 0.29 41983 …83 zsh
0 0.00 1.16 0.31 68298 …98 zsh
Gördüğünüz şey, bu komuttan görmek istediklerinizi temsil eden bir görünümdür. Ancak, bu görünüm size eksiksiz bir bilgi kümesi göstermez. Farklı bir şey görmek için, sonuçta hangi özellikleri görmek istediğinizi açıkça belirtebilirsiniz.
Yanıtın tamamını alma
Şu ana kadar gördüğünüz şey sınırlı bir yanıt. Yanıtın tamamını sunmak için joker karakter *
kullanırsınız, örneğin:
Get-Process zsh | Format-List -Property *
Karakter *
, ilgilendiğiniz değerleri araştırmanıza olanak tanıyan her özniteliği ve değerini gösterir. Tam yanıt, gerçek özellik adları yerine özellikler için sunu adlarını da kullanır ve sunu adları raporda iyi görünür.
Bu avantajlara rağmen, verilerin tam çıktısını almak istemeyebilirsiniz, ancak varsayılan yanıttan da memnun olmayabilirsiniz.
Belirli sütunları seçme
Yanıtı sınırlandırmak ve varsayılan yanıt ile tam yanıt arasında bir orta değer bulmak için ilgilendiğiniz bazı özellikleri seçmek ve bu özellikleri parametresine giriş olarak kullanmak Select-Object
istiyorsunuz. Ancak, burada bir sorun var, sütunlar için gerçek adları kullanmanız gerekir. Gerçek isimleri nasıl öğrenebilirsiniz? Get-Member
adresini kullanın. çağrısı Get-Member
size tüm özellikleri ve bunların gerçek adlarını verir.
Gerçek özellik adını bulma
Şimdi şu alt kümeyle varsayılan yanıtı hızla özetleyelim:
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
0 0.00 0.01 0.38 644 620 zsh
Varsayılan yanıttan, ve ProcessName
özellikleri Id
büyük olasılıkla aynı olarak adlandırılır, ancak CPU'lar bir sunu adıdır; gerçek özellik adları yalnızca metin karakterlerinden oluşur ve boşluk yoktur. Belirli bir özelliğin gerçek adını bulmak için kullanabilirsiniz Get-Member
:
Get-Process zsh | Get-Member -Name C*
Artık ile başlayan C
adlara sahip tüm üyelerin listesini alırsınız. Bunların CPU
arasında, büyük olasılıkla istediğiniz şey de vardır:
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
CancelErrorRead Method void CancelErrorRead()
CancelOutputRead Method void CancelOutputRead()
Close Method void Close()
CloseMainWindow Method bool CloseMainWindow()
Container Property System.ComponentModel.IContainer Container {get;}
CommandLine ScriptProperty System.Object CommandLine {get=…
Company ScriptProperty System.Object Company {get=$this.Mainmodule.FileVersionInfo.CompanyName;}
CPU ScriptProperty System.Object CPU {get=$this.TotalProcessorTime.TotalSeconds;}
Artık doğru özellik adlarıyla tam olarak neye ihtiyacınız olduğunu sormak için nasıl kullanacağınızı Select-Object
biliyorsunuz, örneğin:
Get-Process zsh | Select-Object -Property Id, Name, CPU
Ve işte burada:
Id Name CPU
-- ---- ---
644 zsh 0.3812141
727 zsh 0.3826498
731 zsh 0.3784953
743 zsh 0.3776352
750 zsh 0.3824036
15747 zsh 0.9097993
41983 zsh 0.2934763
68298 zsh 0.3121695
Bu komut dizisi, varsayılan çıkıştan farklı olan ancak önemsediğiniz özellikleri içeren bir çıkış sağlar.
Sıralama
İşlem hattında kullandığınızda Sort-Object
PowerShell, çıkış verilerini önce varsayılan özellikleri kullanarak sıralar. Böyle bir özellik yoksa, nesneleri kendilerini karşılaştırmaya çalışır. Sıralama artan veya azalan düzende yapılır.
Özellikler sağlayarak, belirli sütunlara göre sıralamayı seçebilirsiniz, örneğin:
Get-Process | Sort-Object -Descending -Property Name
Yukarıdaki komutta sütuna göre Name
azalan düzende sıralıyoruz. Birden fazla sütuna göre sıralamak için, sütun adlarını virgülle ayırın; örneğin:
Get-Process | Sort-Object -Descending -Property Name, CPU
Sütun adına göre sıralamaya ek olarak, kendi özel ifadenizi de sağlayabilirsiniz. Bu örnekte, sütunlara göre sıralamak ve CPU
her sütunun Name
sıralama düzenini denetlemek için özel bir ifade kullanırız.
Get-Process 'some process' | Sort-Object -Property @{Expression = "Name"; Descending = $True}, @{Expression = "CPU"; Descending = $False}
Yukarıdaki örnekte ne kadar güçlü ve esnek Sort-Object
olabileceği gösterilmektedir. Bu konu, bu modül için biraz gelişmiş ve kapsam dışındadır, ancak daha gelişmiş modüllerde yeniden ziyaret edilir.