Még egyszer formázás (Format-Table, Format-Wide)

Az előzőekben láthattuk, hogy a select-object segítségével kiszámoltathatunk új tulajdonságértékeket is. Azonban ilyesmire a format-table  is alkalmas:

[9] PS C:\old>Get-ChildItem | Format-Table name,@{Expression={if($_.psiscont

ainer){"Könyvtár"}else{"Fájl"}};Label="Típus";width=10}

 

Name                                                             Típus

----                                                             -----

alfolder                                                         Könyvtár

alice.txt                                                        Fájl

coffee.txt                                                       Fájl

dir.xml                                                          Fájl

Azaz itt is megadható egy hashtábla kifejezés, amit a format-table kiszámol, illetve beépít a táblázatba. A hashtábla lehetséges címkéi:

Mező

Jelentése

Expression

A kiszámolandó kifejezés

Label

A táblázat oszlopának címkéje

Width

Az oszlop szélessége

FormatString

Formázó operátornál használatos formázó kifejezés

Alignment

Rendezés, lehetséges értékek: „Left”, „Center” és „Right

Ez annyiban különbözik a select-object-es átalakítástól, hogy itt az eredeti objektumhoz nem nyúlunk, az minden eredeti tulajdonságát és a típusát megőrzi, csak a megjelenítést változtatjuk meg.

Nézzünk még egy példát:

PS C:\> Get-Process | Format-Table name, id, @{

>> label = "Mióta";

>> expression = {((get-date) - $_.starttime).totalseconds};

>> formatstring = "n0";

>> alignment = "right"}

>> 

 

Name                                              Id                     Mióta

----                                              --                     -----

audiodg                                          688

btdna                                           1696                    36 611

conhost                                         1028                       456

conhost                                         4876                     2 451

csrss                                            416

csrss                                            504

daemon                                          2524                    36 613

Megjegyzés

A PowerShell 5.0-tól kezdődően, ha olyan objektumokat kergetünk bele a Format-Table-be, amihez nincsen formázó XML, akkor maximum 10 tulajdonságot tesz a táblázatba:

PS C:\> $object = [pscustomobject]@{

>>     a = 1

>>     b = 2

>>     c = 3

>>     d = 4

>>     e = 5

>>     f = 6

>>     g = 7

>>     h = 8

>>     i = 9

>>     j = 10

>>     k = 11

>> }

PS C:\>

PS C:\> $object | Format-Table

 

a b c d e f g h i  j

- - - - - - - - -  -

1 2 3 4 5 6 7 8 9 10

Ha az összes tulajdonságot látni akarjuk, akkor használjuk a -property * paramétert:

PS C:\> $object | Format-Table -Property *

 

a b c d e f g h i  j  k

- - - - - - - - -  -  -

1 2 3 4 5 6 7 8 9 10 11

Ezt azért fontos kiemelni, mert elég sok olyan gyakran használt objektummal is találkozhatunk, amihez nincsenek formázó XML állomány, mint például az ActiveDirectory modulban használt objektumok.

Ha nagyon sok elemet akarunk megjeleníteni és nem annyira érdekes több tulajdonság megjelenítése, akkor használhatjuk a Format-Wide  megjelenítést:

[3] PS C:\> dir | Format-Wide

 

 

    Directory: C:\

 

 

 

[Lurdy]                                 [munka]

[PerfLogs]                              [Program Files]

[Program Files (x86)]                   [reflector]

[sokfájl]                               [Users]

[Windows]                               fájl.txt

kon.psc1                                obj.xml

service.html

Itt is van jó néhány lehetőségünk a további testre szabásra. Például optimálisabban használhatjuk ki a rendelkezésünkre álló képernyőt az –AutoSize kapcsolóval:

[6] PS C:\> dir | Format-Wide -Property name -AutoSize

 

 

Lurdy                      munka                     PerfLogs

Program Files              Program Files (x86)       reflector

sokfájl                    Users                     Windows

fájl.txt                   kon.psc1                  obj.xml

service.html

Látható, hogy viszont itt elvesztettünk néhány „okos” formázást, mint például a „fejlécet” és a könyvtárak nevének szögletes zárójelbe tételét, mert ezeket nem alaphelyzetben a Format-Wide tudja, hanem a fájl és mappatípushoz definiált formátumleíró XML állomány, ezekről már korábban az 1.9.3 Típusok testre szabása PS1XML fájlok nélkül (Update-TypeData) fejezetben olvashattak. Cserébe kérhetünk csoportosítást és megadhatjuk, hogy hány oszlopot kérünk:

[9] PS C:\> dir | Format-Wide -Property name -Column 2 -GroupBy psiscontainer

 

 

   PSIsContainer: True

 

 

Lurdy                                   munka

PerfLogs                                Program Files

Program Files (x86)                     reflector

sokfájl                                 Users

Windows

 

 

   PSIsContainer: False

 

 

fájl.txt                                kon.psc1

obj.xml                                 service.html

Ebben a példában a PSIsContainer tulajdonság alapján csoportosítást is kértem.



Word To HTML Converter