19Aug

Geek School: Formátování učení, filtrování a porovnávání v PowerShell

click fraud protection

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 ze série:

  • Naučte se automatizovat systém Windows s PowerShell
  • Naučte se používat cmdlety v PowerShellu
  • Učíme se, jak používat objekty v PowerShellu

A zůstaňte ladící po zbytek série celý týden.

Default Formatting

Když jsem poprvé začal s 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, generuje výstup pouze 3 vlastnosti: Status, Name a DisplayName.

Ale pokud doručíte Get-Service do 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 klávesu enter. Poznámkový blok

instagram viewer

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

Pokud použijeme funkci hledání poznámky, můžeme rychle přeskočit na sekci, která podrobně popisuje výstup cmdletu Get-Service vyhledáním ServiceControllertyp.

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 převést vlastní formátování.K tomu musíte mít tři cmdlety. Formát

  • Formát
  • Formát-Tabulka
  • Formát Wide

Formát Wide jednoduše přebírá sbírku objektů a zobrazuje jednu vlastnost každého objektu. Ve výchozím nastavení vyhledá název vlastnosti;pokud vaše objekty neobsahují vlastnost jména, použije první vlastnost objektu poté, co byly vlastnosti seřazeny abecedně.

Get-Service |Formát-široce

Jak vidíte, je také výchozí dva sloupce, ačkoli můžete určit jak vlastnost, kterou chcete použít, tak kolik sloupců chcete zobrazit.

Get-Service |Format-Wide -Property DisplayName -Kolumn 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 Format-List. Podívejme se na výstup rutiny Get-Process.

Toto tabulkové zobrazení se skutečně hodí pro tento druh informací velmi dobře, ale předstíráme, že chceme, aby to bylo vidět ve formě seznamu. Jediné, co opravdu musíme udělat, je přivést do formátu .

Get-ProcessSeznam formátů

Jak můžete vidět, 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-ProcessFormát-Seznam-Vlastnost *

Alternativně můžete vybrat pouze požadované vlastnosti.

Get-ProcessFormát-Seznam -Vlastnost název, ID

Formát-Tabulka, na druhé straně, brát data a změní jej do tabulky. Vzhledem k tomu, že naše data z Get-Processu jsou již ve formě tabulky, můžeme je použít pro snadné vybírání vlastností, které chceme zobrazit v tabulce. Použil jsem parametr AutoSize, aby se všechna data přizpůsobila jediné obrazovce.

Get-ProcessFormát-název tabulky, id -AutoSize

Filtrování a porovnání

Jednou z nejlepších věcí o použití potrubí založeného na objektech je to, že můžete filtrovat objekty mimo potrubí v libovolné fázi pomocí rutiny Kde-Objekt.

Get-Service |Kde-objekt{ $ _. Stav -eq "Běh"}

Používání objektu kde je ve skutečnosti 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 v bloku filtrování skriptů:

  • eq( Equal To)
  • neq( není rovno)
  • gt( větší než
  • ge)
  • lt( méně než
  • )le( méně než nebo rovnocenné)
  • like( zástupný řetězec Match)

Ú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!