Geek iskolai tanulás formázása, szűrése és összehasonlítása a PowerShell-ben
A Geek Iskola ebben a kiadásában megvizsgáljuk a csővezeték objektumainak formázását, szűrését és összehasonlítását.
Ügyeljen arra, hogy olvassa el a sorozat korábbi cikkeit:
- Ismerje meg, hogyan kell automatizálni a Windowsot a PowerShell segítségével
- Tanulj meg a Cmdlet használatát a PowerShell-ben
- Tanulj meg, hogyan kell használni az objektumokat a PowerShell-ben
És hetekig tartsd a többi sorozatot.
Alapértelmezett formázás
Amikor először kezdtem el a PowerShell-tel, azt hittem, hogy minden varázslat volt, de az igazság az, hogy csak egy kis időt vesz igénybe, hogy megértsük, mi folyik a motorháztető alatt. Ugyanez igaz a PowerShell formázó rendszerre is. Valójában, ha a Get-Service cmdletet futtatja, a létrehozott kimenet csak 3 tulajdonságot jelenít meg: Állapot, Név és DisplayName.
De ha a Get-Service-t a Get-Member-hez csatolod, látod, hogy a ServiceController objektumok sokkal több, mint ezek a három tulajdonság, így mi történik?
A válasz egy rejtett fájlban található, amely meghatározza, hogy a beépített cmdletek többsége megjelenítse a kimenetet. Megértéshez írja be a következőket a héjba, és nyomja meg az Enter billentyűt.
Jegyzettömb C: Windows System32 WindowsPowerShell1.0 DotNetTypes.format.ps1xml
Ha a Jegyzettömb keresési funkcióját használja, gyorsan átugorhatunk a Get-Service cmdlet kimenetét részletező részre a ServiceController típus keresésével.
Hirtelen láthatjuk, hogy a motorháztető alatt a PowerShell formázza a csővezetékben lévő minden olyan szolgáltatást, amely a ServiceController típusú és három oszlopot tartalmazó táblázatot hoz létre: Állapot, Név és DisplayName. De mi van akkor, ha az a típus, amellyel foglalkozik, nem rendelkezik bejegyzéssel a fájlban, vagy más formátumfájlban? Nos, akkor tényleg nagyon egyszerű. Ha a csővezetékből kilépő objektumnak 5 vagy több tulajdonsága van, a PowerShell megjeleníti az összes objektum tulajdonságát egy listában; ha kevesebb mint 5 tulajdonsága van, akkor azokat egy táblázatban jeleníti meg.
Adatok formázása
Ha nem elégedett egy objektum vagy típus alapértelmezett formázásával, akkor saját formátumát is görgetheti. Három cmdlet van, amit tudnia kell, hogy ezt tegye.
- Format-List
- Format-Table
- Format-Wide
Format-Wide egyszerűen egy objektumgyűjteményt vesz fel, és az egyes objektumok egyetlen tulajdonságát jeleníti meg. Alapértelmezés szerint egy név tulajdonságot keres; ha az objektumok nem tartalmaznak névtulajdonságot, akkor az objektum első tulajdonságát használja, miután a tulajdonságokat betűrendben rendezték.
Get-Service Format-Wide
Mint látható, ez is alapértelmezetten két oszlopra van beállítva, bár megadhatja, hogy melyik tulajdonságot szeretné használni, valamint hogy hány oszlopot kíván megjeleníteni.
Get-Service Format-Wide -Property DisplayName -6 oszlop
Ha alapértelmezés szerint valamit táblázatként formázunk, akkor mindig a lista nézetre kapcsolhatja a Format-List cmdlet használatával. Vessünk egy pillantást a Get-Process cmdlet kimenetére.
Ez a táblázatos nézet nagyon jól illeszkedik az ilyen jellegű információkhoz, de tegyünk úgy, mintha azt listaként szeretnénk megtekinteni. Mindössze annyit kell tennünk, hogy csövezzük Format-List.
Get-Process | Format-List
Mint látható, alapértelmezés szerint csak négy elem jelenik meg a listában. Az objektum összes tulajdonságának megtekintéséhez használjon helyettesítő karaktert.
Get-Process | Format-List -Property *
Másik lehetőségként csak a kívánt tulajdonságokat választhatja ki.
Get-Process | Formátum-lista - Tulajdonság neve, azonosító
Format-Table, másrészt adatokat vesz és egy táblává alakítja. Mivel a Get-Process-ből származó adatok már táblázatos formában vannak, azt használhatjuk, hogy könnyen kiválassza a táblázatban megjeleníteni kívánt tulajdonságokat. Az AutoSize paraméterrel az összes adatot egyetlen képernyőre illesztettem.
Get-Process | Formátum-tábla neve, id -AutoSize
Szűrés és összehasonlítás
Az objektum alapú csővezeték használatának egyik legjobb dolog az, hogy az objektumok kiszűrése a csővezetékből bármelyik szakaszban a Where-Object cmdlet használatával lehetséges.
Get-Service Hol-objektum $ _. Állapot -qq „Futás”
Ahol az objektum nagyon egyszerű. A $ _ az aktuális csővezetékobjektumot jelenti, amelyből kiválaszthatja azt a tulajdonságot, amelyet szűrni szeretne. Itt csak olyan objektumokat tartottunk, ahol az Állapot tulajdonság egyenlő a Futás funkcióval. Néhány összehasonlító operátor használható a szűrési parancsfájlblokkban:
- eq (egyenlő)
- neq (nem egyenlő)
- gt (nagyobb)
- ge (nagyobb vagy egyenlő)
- lt (kevesebb, mint)
- le (kevesebb vagy egyenlő)
- tetszik (Wildcard String Match)
A teljes listát és további információkat a about_comparison konceptuális súgófájlban lehet megtekinteni, de egy kis időt vesz igénybe a Hol-Obeject szintaxishoz. Ez most az egész!