Početna » kako da » Geek škola učenje formatiranje, filtriranje i uspoređivanje u PowerShell

    Geek škola učenje formatiranje, filtriranje i uspoređivanje u PowerShell

    U ovom izdanju Geek Schoola promatramo oblikovanje, filtriranje i uspoređivanje objekata u cjevovodu.

    Svakako pročitajte prethodne članke iz serije:

    • Saznajte kako automatizirati sustav Windows pomoću programa PowerShell
    • Učenje korištenja Cmdletova u PowerShell-u
    • Učenje korištenja objekata u programu PowerShell

    Ostanite u tijeku cijeli tjedan.

    Zadano oblikovanje

    Kada sam prvi put krenuo s PowerShellom, mislio sam da je sve magično, ali istina je da je potrebno malo vremena da se shvati što se događa ispod haube. Isto vrijedi i za sustav oblikovanja PowerShell. U stvari, ako pokrenete cmdlet Get-Service, generirani izlaz prikazuje samo 3 svojstva: Status, Ime i Naziv prikaza.

    Ali ako probate Get-Service na Get-Member, vidjet ćete da objekti ServiceController-a imaju puno više od samo ta tri svojstva, tako da se ono što se događa?

    Odgovor leži unutar skrivene datoteke koja definira kako većina ugrađenih cmdleta prikazuje svoj izlaz. Da biste dobili razumijevanje, upišite sljedeće u ljusku i pritisnite Enter.

    notepad C: Windows System32 WindowsPowerShell v1.0 DotNetTypes.format.ps1xml

    Ako koristimo notepad's Find funkciju, možemo brzo preskočiti odjeljak koji detaljno prikazuje izlaz cmdleta Get-Service traženjem tipa ServiceController.

    Odjednom, možete vidjeti da se ispod haube PowerShell formatira sve objekte u cjevovodu koji su tipa ServiceController i stvaraju tablicu s tri stupca: Status, Ime i DisplayName. Ali što ako tip s kojim radite nema unos u tu datoteku, ili bilo koji drugi format datoteke u tom slučaju? Onda je zapravo vrlo jednostavno. Ako objekt koji izlazi iz cjevovoda ima 5 ili više svojstava, PowerShell prikazuje sva svojstva objekta na popisu; ako ima manje od 5 svojstava, prikazuje ih u tablici.

    Formatiranje podataka

    Ako niste zadovoljni zadanim oblikovanjem objekta ili tipa, možete oblikovati vlastito oblikovanje. Postoje tri cmdleta koje trebate znati da biste to učinili.

    • Format-List
    • Format-tablica
    • Format-Široki

    Format-Široki jednostavno uzima zbirku objekata i prikazuje pojedinačno svojstvo svakog objekta. Po defaultu će tražiti svojstvo imena; ako vaši objekti ne sadrže svojstvo imena, ono će koristiti prvo svojstvo objekta nakon sortiranja svojstava po abecednom redu.

    Uzmite uslugu Format-Široki

    Kao što možete vidjeti, ona se također postavlja na dva stupca, iako možete navesti i koje svojstvo želite koristiti, kao i koliko stupaca želite prikazati.

    Uzmite uslugu Format-Wide -Property DisplayName-Column 6

    Ako je nešto formatirano kao tablica po zadanom, uvijek je možete prebaciti na prikaz popisa pomoću cmdleta Format-List. Pogledajmo izlaz naredbe Get-Process.

    Ovaj tablični prikaz vrlo dobro odgovara ovoj vrsti informacija, ali pretvarajmo se da je želimo vidjeti u obliku popisa. Sve što trebamo učiniti je da ga nađemo Format-List.

    Get-Process | Format-List

    Kao što možete vidjeti, samo su četiri stavke prikazane na popisu prema zadanim postavkama. Da biste vidjeli sva svojstva objekta, možete koristiti zamjenski znak.

    Get-Process | Popis formata - svojstvo *

    Alternativno, možete odabrati samo željena svojstva.

    Get-Process | Liste formata - Naziv svojstva, id

    Format-tablica, s druge strane, uzima podatke i pretvara ih u tablicu. Budući da su naši podaci iz usluge Get-Process već u obliku tablice, pomoću njih možemo jednostavno odabrati svojstva koja želimo prikazati u tablici. Koristio sam parametar AutoSize (Automatska postavka) da bi svi podaci stali na jedan zaslon.

    Get-Process | Ime formata-tablice, id -AutoSize

    Filtriranje i usporedba

    Jedna od najboljih stvari pri korištenju cjevovoda temeljenog na objektima je da možete filtrirati objekte iz cjevovoda u bilo kojoj fazi pomoću cmdleta Gdje-Objekat.

    Uzmite uslugu Gdje-objekt $ _. Status -eq "Trčanje"

    Korištenje gdje je objekt zapravo vrlo jednostavno. $ _ predstavlja trenutni objekt cjevovoda, iz kojeg možete odabrati svojstvo na kojem želite filtrirati. Ovdje su samo zadržali objekte u kojima je status Status jednak Running. Postoji nekoliko usporednih operatora koje možete koristiti u bloku skripte za filtriranje:

    • eq (jednako)
    • neq (nije jednako)
    • gt (Veće od)
    • ge (više ili jednako)
    • lt (manje od)
    • le (manje od ili jednako)
    • like (podudaranje znakova za znakove zamjenskih znakova)

    Potpuni popis i više informacija možete pogledati u konceptualnoj datoteci pomoći about_comparison, no potrebno je neko vrijeme da se naviknete na sintaksu Gdje-Obeject. To je sve za ovo vrijeme!