Format-Table în PowerShell

Formatare și conversie Windows PowerShell 1.0

Afișează obiectele ca tabel, cu coloanele alese de tine, inclusiv coloane calculate.

Sintaxă
Format-Table [[-Property] <Object[]>] [-AutoSize] [-Wrap] [-GroupBy <Object>] [-HideTableHeaders] [-RepeatHeader] [-View <string>]

Ce face Format-Table

Format-Table (alias ft) afișează fiecare obiect pe un rând și fiecare proprietate într-o coloană. Pentru obiectele fără o vizualizare predefinită (de exemplu cele create cu [pscustomobject]), PowerShell alege singur tabelul când au cel mult patru proprietăți și lista pentru cele cu mai multe; cu Format-Table forțezi tabelul și alegi coloanele.

Coloanele pot fi calculate cu un hashtable: Label (sau Name), Expression, plus opțional FormatString, Width și Alignment (Left, Center, Right). Numerele se aliniază la dreapta, textul la stânga. -Wrap mută pe rândul următor textul care nu încape, în loc să-l taie.

Format-Table produce obiecte de formatare, nu date. Pune-l ultimul în pipeline, doar pentru afișare. Din PowerShell 7.2, culoarea antetului se schimbă din $PSStyle.Formatting.TableHeader.

Parametri

Parametru Descriere
-Property Coloanele afișate, în ordine; acceptă wildcard-uri și coloane calculate.
-AutoSize Ajustează lățimea coloanelor după conținut.
-Wrap Continuă pe rândul următor textul prea lung, în loc să-l trunchieze.
-GroupBy Afișează câte un tabel separat pentru fiecare valoare; datele trebuie sortate înainte.
-HideTableHeaders Ascunde antetul tabelului.
-RepeatHeader Repetă antetul după fiecare ecran (util cu more / less).
-View Folosește o vizualizare de tabel definită (nu se poate combina cu -Property).

Ce returnează

Obiecte de formatare (Microsoft.PowerShell.Commands.Internal.Format) folosite doar pentru afișare.

Exemple

Exemplul 1: Tabel pentru obiecte cu cinci proprietăți

Cu cinci proprietăți, PowerShell le-ar afișa implicit ca listă; Format-Table le pune într-un tabel.

$elevi = @(
    [pscustomobject]@{ Nume = 'Ana'; Prenume = 'Pop'; Oras = 'Iași'; Nota = 9; Varsta = 17 }
    [pscustomobject]@{ Nume = 'Mihai'; Prenume = 'Ionescu'; Oras = 'Cluj'; Nota = 7; Varsta = 18 }
)
$elevi | Format-Table

Ieșire în terminal

Nume  Prenume Oras Nota Varsta
----  ------- ---- ---- ------
Ana   Pop     Iași    9     17
Mihai Ionescu Cluj    7     18

Exemplul 2: Coloane alese și o coloană calculată

Afișăm produsul, cantitatea și un total calculat, fără să schimbăm obiectele.

$produse = @(
    [pscustomobject]@{ Produs = 'Cafea'; Pret = 25; Cantitate = 4 }
    [pscustomobject]@{ Produs = 'Ceai'; Pret = 12; Cantitate = 10 }
)
$produse | Format-Table -Property Produs, Cantitate, @{ Label = 'Total (lei)'; Expression = { $_.Pret * $_.Cantitate } } -AutoSize

Ieșire în terminal

Produs Cantitate Total (lei)
------ --------- -----------
Cafea          4         100
Ceai          10         120

Exemplul 3: De ce Format-Table trebuie să fie ultimul

Rezultatul nu mai conține produsele, ci obiecte interne de formatare.

$produse = @(
    [pscustomobject]@{ Produs = 'Cafea'; Pret = 25 }
    [pscustomobject]@{ Produs = 'Ceai'; Pret = 12 }
)
$tabel = $produse | Format-Table
$tabel[0].GetType().Name

Ieșire în terminal

FormatStartData

Greșeli frecvente

  • ... | Format-Table | Export-Csv sau | Where-Object după Format-Table: comenzile următoare primesc obiecte de formatare, iar fișierul CSV conține coloane ca ClassId2e4f51ef21dd47e99d3c952918aff9cd. Selectează coloanele cu Select-Object și formatează doar la final.
  • Coloanele tăiate cu „…” nu înseamnă date lipsă: e doar lățimea ferestrei. Folosește -Wrap, -AutoSize sau Format-List.
  • -GroupBy pe date nesortate creează mai multe tabele pentru aceeași valoare; sortează întâi cu Sort-Object după aceeași proprietate.

Comenzi înrudite

  • Format-List: Afișează fiecare proprietate a obiectelor pe un rând separat, sub forma „Nume : valoare”.
  • Select-Object: Alege doar anumite proprietăți ale obiectelor, adaugă proprietăți calculate sau păstrează primele, ultimele ori unicele elemente.
  • Export-Csv: Salvează obiectele într-un fișier CSV: un rând de antet cu numele proprietăților și câte un rând pentru fiecare obiect.
  • Out-File: Salvează într-un fișier ieșirea unei comenzi, exact cum apare în consolă; operatorii de redirecționare > și >> fac același lucru.
  • Get-Member: Arată tipul obiectelor dintr-un pipeline și ce proprietăți și metode au, ca să știi ce poți selecta, filtra sau apela.