19Aug

Geek School: A tanulás formázása, szűrése és összehasonlítása a PowerShell-ben

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!