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!