Úvodná » ako » Geek študuje formátovanie, filtrovanie a porovnávanie v PowerShell

    Geek študuje formátovanie, filtrovanie a porovnávanie v PowerShell

    V tomto vydaní Geek School sa pozrieme na formátovanie, filtrovanie a porovnávanie objektov v potrubí.

    Nezabudnite si prečítať predchádzajúce články v sérii:

    • Naučte sa ako automatizovať systém Windows pomocou nástroja PowerShell
    • Naučiť sa používať Cmdlets v PowerShell
    • Učenie o používaní objektov v systéme PowerShell

    A zostávajte celú týždeň na zvyšok seriálu.

    Predvolené formátovanie

    Keď som prvýkrát začal pracovať s PowerShellom, myslel som si, že všetko je kúzlo, ale pravdou je, že trvá len trochu času, aby sme pochopili, čo sa deje pod kapotou. To isté platí pre formátovací systém PowerShell. V skutočnosti, ak spustíte Get-Service cmdlet, vygenerovaný výstup zobrazí iba tri vlastnosti: Status, Name a DisplayName.

    Ak však doručíte Get-Service na Get-Member, uvidíte, že objekty ServiceController majú oveľa viac ako len tieto tri vlastnosti, takže čo sa deje?

    Odpoveď spočíva v skrytom súbore, ktorý definuje, ako väčšina vstavaných cmdletov zobrazuje ich výstup. Ak chcete získať pochopenie, zadajte do shellu nasledujúce a stlačte kláves enter.

    Poznámkový blok C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml

    Ak použijeme funkciu Vyhľadávanie poznámok, môžeme rýchlo preskočiť na sekciu, ktorá podrobne opisuje výstup cmdletu Get-Service vyhľadaním typu ServiceController.

    Zrazu môžete vidieť, že pod kapotou PowerShell sa formátujú všetky objekty v potrubí, ktoré sú typu ServiceController a vytvorí sa tabuľka s tromi stĺpcami: Status, Name a DisplayName. Ale aký typ, s ktorým máte čo do činenia, nemá záznam v tomto súbore alebo iný formátový súbor? No, je to vlastne celkom jednoduché. Ak objekt vychádzajúci z potrubia má 5 alebo viac vlastností, PowerShell zobrazí všetky vlastnosti objektu v zozname; ak má menej ako 5 vlastností, zobrazí ich v tabuľke.

    Formátovanie údajov

    Ak nie ste spokojní s predvoleným formátovaním objektu alebo typu, môžete rozbaliť vlastné formátovanie. Existujú tri cmdlety, ktoré potrebujete vedieť, aby ste to urobili.

    • Format-List
    • Format-Table
    • Format-Wide

    Format-Wide jednoducho berie zbierku objektov a zobrazuje jednu vlastnosť každého objektu. Štandardne bude vyhľadávať vlastnosť názvu; ak vaše objekty neobsahujú vlastnosť názvu, použije prvú vlastnosť objektu, akonáhle sú vlastnosti zoradené abecedne.

    Get-Service | Format-Wide

    Ako vidíte, je tiež predvolené dva stĺpce, hoci môžete určiť ako vlastnosť, ktorú chcete použiť, ako aj počet stĺpcov, ktoré chcete zobraziť.

    Get-Service | Formát-Široký-Vlastnosť Názov_Zobrazenia-Kolóna 6

    Ak je niečo nakonfigurované ako tabuľka v predvolenom nastavení, môžete ho vždy prepnúť do zobrazenia zoznamu pomocou skratky Format-List. Poďme sa pozrieť na výstup cmdlet Get-Process.

    Tento tabuľkový prehľad skutočne vyhovuje tomuto typu informácií veľmi dobre, ale predstierame, že ho chceme zobraziť vo forme zoznamu. Všetko, čo naozaj musíme urobiť, je to, aby to bolo Format-List.

    Get-Process Format-List

    Ako vidíte, v predvolenom nastavení sú v zozname iba štyri položky. Ak chcete zobraziť všetky vlastnosti objektu, môžete použiť zástupný znak.

    Get-Process Formát-Zoznam-Vlastníctvo *

    Alternatívne môžete vybrať len požadované vlastnosti.

    Get-Process Zoznam formátov - názov vlastníctva, id

    Format-Table, na druhej strane berie dáta a mení ich na stôl. Vzhľadom na to, že naše dáta zo služby Get-Process sú už vo forme tabuľky, môžeme ju použiť na ľahké výbery vlastností, ktoré chceme zobraziť v tabuľke. Použil som parameter AutoSize, aby sa všetky údaje prispôsobili jednej obrazovke.

    Get-Process Formát-názov tabuľky, id -AutoSize

    Filtrovanie a porovnávanie

    Jednou z najlepších vecí, pokiaľ ide o používanie objektovo založeného potrubia, je to, že môžete filtrovať objekty mimo potrubia v ľubovoľnom štádiu pomocou cmdletu Where-Object.

    Get-Service | Kde-Objekt $ _ Stav -eq "Spustenie"

    Použitie, kde je objekt skutočne veľmi jednoduchý. $ _ predstavuje aktuálny objekt potrubia, z ktorého si môžete vybrať vlastnosť, ktorú chcete filtrovať. Tu sa nachádzajú iba objekty, v ktorých sa stav Vlastnosť rovná spusteniu. Existuje niekoľko porovnávacích operátorov, ktoré môžete použiť v bloku filtrovania:

    • eq (Equal To)
    • neq (nie je rovná)
    • gt (väčší ako)
    • ge (väčšia ako rovná)
    • (menej ako)
    • le (menej ako rovný)
    • ako (Zápasový reťazec)

    Úplný zoznam a ďalšie informácie si môžete pozrieť v koncepčnom súbore nápovedy "about_comparison", avšak niekedy je potrebné zvyknúť si na syntax Kde-Object. To je všetko pre tento čas!