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

Obsah:

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

Video: Geek School: Formátování učení, filtrování a porovnávání v PowerShell
Video: NEJLEPŠÍ způsob, jak vydělat 200 $ za den (BEZ WEBOVÉ STRÁNKY) 2024, Březen
Geek School: Formátování učení, filtrování a porovnávání v PowerShell
Geek School: Formátování učení, filtrování a porovnávání v PowerShell
Anonim
V tomto vydání Geek School se podíváme na formátování, filtrování a porovnávání objektů v potrubí.
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 Cmdlety v PowerShell
  • Učení o používání objektů ve formátu PowerShell

A zůstaňte na zbytek série celý týden.

Výchozí formátování

Když jsem poprvé začal používat PowerShell, myslela 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.

Pokud však dáte službu Get-Service na Get-Member, zjistíte, že objekty ServiceController mají mnohem víc než jen tyto tři vlastnosti, takže co se děje?
Pokud však dáte službu Get-Service na Get-Member, zjistí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.
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.

notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml

Používáme-li 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, s nímž se zabýváte, nemá záznam v tomto souboru nebo jiný formátový soubor? Takže to je 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.
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, s nímž se zabýváte, nemá záznam v tomto souboru nebo jiný formátový soubor? Takže to je 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í. K tomu musíte mít tři cmdlety.

  • Seznam formátů
  • Tabulka formátů
  • Formát-širokoúhlý
Image
Image

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 jména, použije první vlastnost objektu poté, co byly vlastnosti seřazeny abecedně.

Get-Service | Format-Wide

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

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

Tento tabulkový pohled se skutečně hodí pro tento druh 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 | Format-List

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.
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 | Format-List –Property *

Případně můžete vybrat pouze požadované vlastnosti.
Případně můžete vybrat pouze požadované vlastnosti.

Get-Process | Format-List –Property name,id

Image
Image

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 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-Process | Format-Table name,id –AutoSize

Image
Image

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í rutiny Where-Object.

Get-Service | Where-Object {$_.Status -eq “Running”}

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 operátorů porovnání, které můžete použít v bloku filtrování skriptů:
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 operátorů porovnání, které můžete použít v bloku filtrování skriptů:
  • 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še pro tuto dobu!

Doporučuje: