/ / Geek Iskola: Formázás, szűrés és összehasonlítás tanulása a PowerShell programban

Geek Iskola: Formázás, szűrés és összehasonlítás tanulása a PowerShell programban

A Geek School ebben a kiadásában megvizsgáljuk a Csővezetékben lévő objektumok formázását, szűrését és összehasonlítását.

Feltétlenül olvassa el a sorozat korábbi cikkeit:

  • Megtanulja, hogyan lehet automatizálni a Windows rendszert a PowerShell használatával
  • A Cmdlets használatának megtanulása a PowerShell-ben
  • Tárgyak használatának megtanulása a PowerShell-ben

És egész héten maradjon velük a sorozat többi részében.

Alapértelmezett formázás

Amikor először indítottam a PowerShell-rel, énazt gondolta, hogy minden varázslatos, de az igazság az, hogy csak egy kis időbe telik, hogy megértsük, mi folyik a motorháztető alatt. Ugyanez vonatkozik a PowerShell formázó rendszerre. Valójában, ha futtatja a Get-Service parancsmagot, a létrehozott kimenet csak 3 tulajdonságot jelenít meg: Állapot, Név és Megjelenítési név.

kép

De ha a Get-Service-t a Get-Member-hez továbbítja, láthatja, hogy a ServiceController objektumoknak sokkal több van, nem csupán ezen a három tulajdonságon, tehát mi folyik itt?

kép

A válasz rejtett fájlban rejlik, amely meghatározza, hogy a legtöbb beépített parancsmag hogyan jelenítse meg a kimenetet. A megértés érdekében írja be a következőket a héjba és nyomja meg az enter billentyűt.

Jegyzettömb C: WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml

Ha a Jegyzettömb Find funkcióját használjuk, akkor gyorsan átugorhatjuk a Get-Service parancsmag kimenetét részletező részbe a ServiceController típus keresésével.

kép

Hirtelen ezt láthatja a motorháztető alattA PowerShell formázza a Csővezetékben a ServiceController típusú objektumokat, és három oszlopból álló táblázatot hoz létre: Status, Name és DisplayName. De mi van, ha a szóban forgó típusnak nincs bejegyzése a fájlban, vagy bármilyen más formátumú fájl ehhez a kérdéshez? Nos, ez valójában nagyon egyszerű. Ha a csővezetékből kijövő objektum legalább öt tulajdonsággal rendelkezik, a PowerShell megjeleníti az objektum összes tulajdonságát egy listában; ha kevesebb mint 5 tulajdonsággal rendelkezik, akkor megjeleníti azokat egy táblázatban.

Az adatok formázása

Ha nem elégedett egy objektum vagy típus alapértelmezett formázásával, gördítheti a saját formázását. Három cmdlet van, amelyet tudnod kell ennek végrehajtásához.

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

kép

Format-Wide egyszerűen csak objektumok és kijelzők gyűjteményét veszi felminden objektum egyetlen tulajdonsága. Alapértelmezés szerint egy névtulajdonságot fog keresni; ha az objektumok nem tartalmaznak névtulajdonságot, akkor az objektum első tulajdonságát fogja használni, miután a tulajdonságok ábécé sorrendbe kerültek.

Get-Service | Format-Wide

kép

Mint láthatja, alapértelmezés szerint két oszlop is van, bár megadhatja mind a használni kívánt tulajdonságot, mind pedig azt, hogy hány oszlopot szeretne megjeleníteni.

Get-Service | Formátum-széles-Tulajdonságok DisplayName-6. oszlop

kép

Ha valamit alapértelmezés szerint táblának formáznak, akkor mindig a formátum-lista parancsmag segítségével válthatja át lista nézetre. Vessen egy pillantást a Get-Process parancsmag kimenetére.

kép

Ez a táblázatos nézet valóban nagyon jól illeszkedik az ilyen típusú információkhoz, de tegyük fel, mintha lista formában szeretnénk megtekinteni. Csak annyit kell tennünk, hogy odacsináljuk Format-List.

Get-Process | Format-List

kép

Mint láthatja, alapértelmezés szerint csak négy elem jelenik meg a listában. Az objektum összes tulajdonságának megtekintéséhez helyettesítő karakter használható.

Get-Process | Format-List - Tulajdonság *

kép

Másik lehetőségként kiválaszthatja csak a kívánt tulajdonságokat.

Get-Process | Format-List –tulajdonnév, id

kép

Format-Table, másrészt adatot vesz, és ává alakítjaasztal. Mivel a Get-Process adatai már táblázatok formájában vannak, felhasználhatjuk azokat a tulajdonságok egyszerű kiválasztására, amelyeket a táblázatban megjeleníteni szeretnénk. Az AutoSize paramétert használtam, hogy az összes adat egyetlen képernyőre illeszkedjen.

Get-Process | Formátum-tábla neve, azonosító - Automatikus méret

kép

Szűrés és összehasonlítás

Az egyik legjobb dolog az objektum-alapú csővezeték használatában az, hogy bármikor kiszűrheti az objektumokat a csővezetékből a Where-Object parancsmag segítségével.

Get-Service | Hol-Objektum {$ _. Állapot -eq „Futó”}

kép

A tárgy használata valójában nagyon egyszerű. $ _ képviseli az aktuális csővezeték-objektumot, amelyből kiválaszthat egy tulajdonságot, amelyre szűrni szeretne. Itt csak azokat az objektumokat tartották, ahol a Status tulajdonság megegyezik a futással. Néhány összehasonlító operátor használható a szűrő parancsfájl blokkban:

  • eq (egyenlő)
  • neq (nem egyenlő)
  • gt (nagyobb, mint)
  • ge (nagyobb vagy egyenlő)
  • lt (kevesebb mint)
  • le (kevesebb vagy azzal egyenlő)
  • tetszik (helyettesítő karakterlánc mérkőzés)

A teljes lista és további információk a about_comparison fogalmi súgófájlban tekinthetők meg, azonban eltart egy ideig, amíg hozzászokik a Where-Obeject szintaxishoz. Ez mind erre az időre!