Geek Školní formátování, filtrování a porovnávání v prostředí PowerShell
V tomto vydání Geek School se podíváme na formátování, filtrování a porovnávání objektů v potrubí.
Ujistěte se, že jste si přečetli předchozí články v sérii:
- Naučte se automatizovat systém Windows pomocí nástroje PowerShell
- Naučte se používat Cmdlets v PowerShell
- Učení o používání objektů v prostředí PowerShell
A zůstaňte v klidu po zbytek série celý týden.
Výchozí formátování
Když jsem poprvé začal používat PowerShell, myslel jsem si, že všechno je kouzlo, ale pravdou je, že to trvá jen trochu času, abych pochopil, co se děje pod kapotou. Totéž platí pro systém formátování PowerShell. Ve skutečnosti, pokud spustíte Get-Service cmdlet, výstup generuje pouze 3 vlastnosti: Status, Name a DisplayName.
Pokud však získáte Get-Service na Get-Member, uvidíte, že objekty ServiceController mají mnohem víc než jen tyto tři vlastnosti, takže co se děje?
Odpověď spočívá v skrytém souboru, který definuje, jak většina vestavěných cmdletů zobrazuje jejich výstup. Chcete-li získat pochopení, zadejte následující do shellu a stiskněte Enter.
Poznámkový blok C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml
Pokud použijeme funkci Poznámkový blok, můžeme rychle přeskočit na sekci, která podrobně popisuje výstup rutiny Get-Service vyhledáním typu ServiceController.
Najednou můžete vidět, že pod kapotou PowerShell jsou formátovány všechny objekty v potrubí, které jsou typu ServiceController a vytváří se tabulka se třemi sloupci: Status, Name a DisplayName. Ale co když typ, se kterým se zabýváte, nemá záznam v tomto souboru nebo jiný formátový soubor? Takže je to docela jednoduché. Pokud objekt vystupující z potrubí má 5 nebo více vlastností, PowerShell zobrazí všechny vlastnosti objektu v seznamu; pokud má méně než 5 vlastností, zobrazí je v tabulce.
Formátování dat
Pokud nejste spokojeni s výchozím formátováním objektu nebo typu, můžete vložit vlastní formátování. Existují tři cmdlety, které potřebujete vědět.
- Seznam formátů
- Formát-tabulka
- Formát-širokoúhlý
Formát-širokoúhlý jednoduše vezme sbírku objektů a zobrazí jednu vlastnost každého objektu. Ve výchozím nastavení vyhledá název vlastnosti; pokud vaše objekty neobsahují vlastnost name, použije první vlastnost objektu poté, co byly vlastnosti seřazeny abecedně.
Get-Service | Formát-širokoúhlý
Jak vidíte, je také výchozí dva sloupce, i když můžete určit jak vlastnost, kterou chcete použít, tak kolik sloupců chcete zobrazit.
Get-Service | Formát-široko-vlastnost DisplayName-sloupec 6
Pokud je něco ve výchozím nastavení naformátováno jako tabulka, můžete jej vždy přepnout do zobrazení seznamu pomocí rutiny Formát-seznam. Podívejme se na výstup rutiny Get-Process.
Tento tabelární pohled skutečně vyhovuje tomuto typu informací velmi dobře, ale předstíráme, že chceme, aby to bylo v seznamu. Jediné, co musíme udělat, je to, aby to bylo Seznam formátů.
Get-Process | Seznam formátů
Jak vidíte, jsou ve výchozím nastavení zobrazeny pouze čtyři položky. Chcete-li zobrazit všechny vlastnosti objektu, můžete použít zástupný znak.
Get-Process | Formát-Seznam-Vlastnost *
Případně můžete vybrat pouze požadované vlastnosti.
Get-Process | Formát-Seznam-Název vlastnictví, id
Formát-tabulka, na druhé straně bere data a mění ji na tabulku. Vzhledem k tomu, že naše data z Get-Processu jsou již ve formě tabulky, můžeme je použít k výběru vlastností, které chceme zobrazit v tabulce. Parametr Automatické rozměry jsem použil k tomu, aby všechna data zapadla na jednu obrazovku.
Get-Process | Formát-název tabulky, id -AutoSize
Filtrování a porovnávání
Jednou z nejlepších věcí o použití potrubí založeného na objektech je to, že můžete filtrovat objekty z potrubí v libovolné fázi pomocí skriptů Where-Object.
Get-Service | Kde-Objekt $ _. Stav -eq "Běží"
Použití objektu kde je vlastně velmi jednoduché. $ _ představuje aktuální objekt pipeline, ze kterého můžete vybrat vlastnost, kterou chcete filtrovat. Zde byly pouze udržovány objekty, kde se vlastnost Stav rovná běhu. Existuje několik srovnávacích operátorů, které můžete použít ve filtrovacím skriptu:
- eq (Equal To)
- neq (není rovno)
- gt (větší než)
- ge (větší než rovný)
- (méně než)
- le (méně než nebo rovno)
- jako (Zápasový řetězec)
Úplný seznam a další informace lze zobrazit v koncepční nápovědě about_comparison, nicméně to trvá nějaký čas zvykat si na syntaxi Kde-Object. To je všechno pro tuto dobu!