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.
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?
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.
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
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
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
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.
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
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 *
Másik lehetőségként kiválaszthatja csak a kívánt tulajdonságokat.
Get-Process | Format-List –tulajdonnév, id
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
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ó”}
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!