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.