19Aug
A Geek Iskola e kiadásában a csővezeték formázását, szűrését és összehasonlítását tekintjük át.
Olvassa el a korábbi cikkeket a sorozatban:
- Ismerje meg a Windows automatizálását a PowerShell segítségével
- A PowerShell-ben található cmdletek tanulási lehetőségei
- A PowerShell objektumok objektumainak tanítása
A hét minden részében maradjon a sorozatban.
Alapértelmezett formázás
Amikor először elkezdtem a PowerShell-lel, azt hittem, minden mágia, de az igazság az, hogy csak egy kis időbe telik, hogy megértsük, mi folyik a motorháztető alatt. Ugyanez igaz a PowerShell formázó rendszerre. 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 bevezeti a Get-Service szolgáltatást a Get-Member-hez, akkor látja, hogy a ServiceController objektumai sokkal többet tartalmaznak, mint ezek a három tulajdonságok, tehát mi folyik itt?
A válasz egy rejtett fájlban található, amely meghatározza, hogy a beépített cmdletek többsége hogyan jeleníti meg a kimenetét. A megértéshez írja be a következőket a shellbe, és nyomja meg az enter billentyűt.
jegyzettömb C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml
Ha a jegyzettömb Find funkcióját használjuk, gyorsan átugorhatunk a Get-Service cmdlet kimenetét részletező részre a ServiceControllertípus.
Hirtelen láthatjuk, hogy a motorháztető alatt a PowerShell formázza a Pipeline bármely olyan objektumát, amely a ServiceController típusából áll, és három oszlopot tartalmazó állapotot hoz létre: Állapot, Név és DisplayName. De mi van akkor, ha a típus, amellyel foglalkozik, nincs bejegyzés a fájlban, vagy bármilyen más formátumú fájl ehhez a kérdéshez? Nos, akkor elég egyszerű.Ha a csővezetékből származó tárgynak 5 vagy több tulajdonsága van, a PowerShell felsorolja az összes objektum tulajdonságait egy listában;ha kevesebb mint 5 tulajdonság van, akkor táblázatban jeleníti meg őket.
Az adatok formázása
Ha nem elégedett egy objektum vagy típus alapértelmezett formázásával, saját formázását görgeti. Három cmdlet kell ahhoz, hogy tudd ezt.
- formátum-lista
- formátum-táblázat
- formátum-széles
formátum-széles egyszerűen gyűjt egy objektum gyűjteményét és minden objektum egyetlen tulajdonságát megjeleníti. Alapértelmezés szerint keresni fog egy név tulajdonságát;ha az objektumok nem tartalmaznak névtulajdonságot, akkor az objektum első tulajdonságát fogja használni, miután a tulajdonságok betűrendben lettek rendezve.
Get-Service |Formátum-széles
Ahogy láthatja, alapértelmezésként két oszlop is létezik, bár megadhatja, hogy melyik tulajdonságot kívánja használni, valamint hogy hány oszlopot szeretne megjeleníteni.
Get-Service |Format-Wide -Property DisplayName - 6.sz.
Ha valami alapértelmezés szerint táblázatos formátumú, akkor a Format-List cmdlet segítségével bármikor átválthat listás nézetre. Vessünk egy pillantást a Get-Process cmdlet kimenetére.
Ez a táblázatos nézet nagyon jól illeszkedik ehhez az információhoz, de tegyük fel, hogy meg akarjuk nézni a listát. Mindössze annyit kell tennünk, hogy az formátum-lista -t kell vezetni.
Get-Process |Formátum-lista
Ahogy láthatja, csak négy elem jelenik meg a listán alapértelmezés szerint. Az objektum összes tulajdonságának megtekintéséhez használhat helyettesítő karaktert.
Get-Process |Format-List -Property *
Alternatív megoldásként csak a kívánt tulajdonságokat választhatja ki.
Get-Process |Formátum-lista -profilnév, id
Formátum-táblázat, másrészről, adatokat vesz fel és táblázatra alakítja. Mivel a Get-Process adataink már táblázatban vannak, használhatjuk azt, hogy könnyen kiválasszuk a táblázatban megjelenítendő tulajdonságokat. Az AutoSize paramétert használtam, hogy az összes adatot egyetlen képernyőre illessze.
Get-Process |Formátum-táblázat neve, id -AutoSize
Az
szűrése és összehasonlítása Az objektumalapú csővezeték használatának egyik legjobb dologja az, hogy a tárgyakat mindenhol a csővezetékből kiszűrheti a Where-Object cmdlet segítségével.
Get-Service |Where-Object{ $ _. Állapot -eq "Futás"}
Az objektum használata nagyon egyszerű.$ _ az aktuális csővezeték-objektumot jelenti, ahonnan kiválaszthatja a szűrni kívánt tulajdonságot. Itt csak olyan tárgyakat tartottak, ahol az Állapot tulajdonság egyenlő a Futással. A szűrési szkriptblokkban használhat néhány összehasonlító operátort:
- eq( egyenlő)
- neq
- gt( nagyobb mint)
- ge( nagyobb vagy egyenlő)
- lt( kisebb, mint)
- le( Kevesebb vagy egyenlő)
- hasonló( Wildcard String Match)
A teljes listát és további információkat a kb. összehasonlító koncepcionális súgófájlban lehet megtekinteni, de a Where-Obeject szintaxis használatához időbe telik. Ez mind ez ideig!