Veri seçme

Tamamlandı

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-MemberGet-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-Memberyaparak 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-Defaultotomatik 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-Listadresine 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-Objectistiyorsunuz. 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 Cadlara sahip tüm üyelerin listesini alırsınız. Bunların CPUarası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.