Articles

PowerShell: obținerea de proprietăți De la obiecte în matrice

Posted by admin

în PowerShell, de multe ori rulez comenzi care returnează matrice pe care trebuie să le filtrez. Odată ce am filtrat obiect caut, am nevoie pentru a citi o proprietate de pe acel obiect. Există câteva modalități de a face acest lucru. Aici sunt trei.

acestea sunt, de asemenea, exemple bune dacă sunteți nou la PowerShell și încercați să treceți de la mentalitatea Linux de parsare a șirurilor la mentalitatea PowerShell de manipulare a obiectelor.,

Pentru aceste exemple vom utiliza o matrice filtrat din Get-Process:

Select-Object citește proprietăți de obiecte. Putem conducta este obiect am gasit:

Get-Process | Where-Object ProcessName -Match "update" | Select-Object cpu CPU ---380.761615

În acest caz, Where-Object returnează un obiect și Select-Object citește proprietate, dar aceasta încă funcționează dacă ne-am potrivi mai multe procese. Apoi, Where-Objectreturnează un tablou care este despachetat de conducta PowerShell și trimis la Select-Object unul câte unul.,

acesta este de fapt un filtru de proprietate. Încă returnează o serie de obiecte de proces, dar acele obiecte au doar o proprietate pe care ați selectat-o. Putem vedea acest lucru cuGet-Member:

patru metode, dar numai o proprietate.

Metoda 2: Subexpresie

dacă capturăm ieșirea comenzii noastre de potrivire într-o subexpresie, putem accesa proprietățile obiectului folosind notație punctată așa cum am face cu orice variabilă:

$(Get-Process | Where-Object ProcessName -Match "update").cpu380.761615

Acest lucru funcționează și dacă potrivirea noastră a returnat mai multe obiecte., Subexpresia va conține o matrice și PowerShell va primi automat proprietatea cpu de la fiecare obiect din acea matrice.

spre deosebire de filtrul Select-Object, acesta nu returnează obiectele de proces cu o proprietate cpu. În schimb, se revine o dublă (număr) cu valoarea efectivă:

Metoda 3: Bucla

Ca orice ieșire, putem conducta de meciul nostru într-un ForEach-Object bucla și de a folosi $_ variabile pentru a accesa proprietățile fiecărui element bucla vede:

Get-Process | Where-Object ProcessName -Match "update" | ForEach-Object {$_.cpu}381.625785

bucla, desigur, va lucra pe mai multe obiecte.,

la fel ca subexpresia, aceasta returnează valoarea reală în locul unui obiect cu o proprietate.

automatizarea fericit!

Adam

aveți nevoie de mai mult decât acest articol? Sunt disponibil să mă consult.de asemenea, ați putea dori să consultați aceste articole similare:

  • cum să utilizați Out-String în PowerShell: nu
  • Headless PowerShell DSC Script
  • PowerShell Install-Module: utilizați Install-Package în loc

Leave A Comment