Export-Csv în PowerShell

Formatare și conversie Windows PowerShell 1.0

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.

Sintaxă
Export-Csv [-Path] <string> [[-Delimiter] <char>] [-Encoding <Encoding>] [-Append] [-UseCulture] [-UseQuotes <Always|AsNeeded|Never>] [-NoHeader] [-Force] [-NoClobber]

Ce face Export-Csv

Export-Csv (alias epcsv) scrie proprietățile obiectelor ca valori separate prin virgulă, fiecare valoare convertită la text și pusă implicit între ghilimele. Coloanele se iau din primul obiect: proprietățile în plus ale obiectelor următoare se pierd, iar cele lipsă rămân goale. Alege coloanele înainte cu Select-Object.

În PowerShell 7 fișierul nu mai începe cu rândul #TYPE (comportament implicit din 6.0, deci -NoTypeInformation nu mai e necesar; -IncludeTypeInformation îl readuce), iar codificarea implicită este utf8NoBOM. În Windows PowerShell 5.1 rândul #TYPE apare implicit și codificarea implicită este ASCII, care înlocuiește diacriticele cu ?.

Excel cu setări regionale românești așteaptă de obicei ; ca separator și recunoaște UTF-8 după BOM: pentru el folosește -Delimiter ';' -Encoding utf8BOM (sau -UseCulture, care ia separatorul de listă al sistemului). Din 7.0 există -UseQuotes și -QuoteFields, iar din 7.4 -NoHeader. Din 7.2, hashtable-urile se exportă după chei.

Parametri

Parametru Descriere
-Path Fișierul creat; dacă există, este suprascris fără avertisment.
-Delimiter Separatorul; implicit virgula. Scrie ';' între ghilimele simple.
-UseCulture Folosește separatorul de listă al culturii curente ((Get-Culture).TextInfo.ListSeparator).
-Encoding Codificarea fișierului; implicit utf8NoBOM în PowerShell 7 (utf8BOM pentru Excel).
-Append Adaugă rânduri la sfârșitul unui fișier existent (coloanele trebuie să corespundă).
-UseQuotes Always (implicit), AsNeeded (doar unde e nevoie) sau Never (PowerShell 7.0+).
-QuoteFields Pune ghilimele doar la coloanele numite (PowerShell 7.0+).
-NoHeader Nu scrie rândul de antet (PowerShell 7.4+).
-NoClobber Refuză să suprascrie un fișier existent.
-Force Scrie peste fișiere doar-citire; cu -Append, acceptă obiecte cu alte coloane.

Ce returnează

Nimic; rezultatul este fișierul CSV.

Exemple

Exemplul 1: Export simplu și verificarea fișierului

Fiecare valoare, inclusiv nota, ajunge între ghilimele; diacriticele rămân intacte (UTF-8).

$elevi = @(
    [pscustomobject]@{ Nume = 'Ana'; Oras = 'Iași'; Nota = 9 }
    [pscustomobject]@{ Nume = 'Mihai'; Oras = 'Cluj'; Nota = 7 }
)
$elevi | Export-Csv -Path .\elevi.csv
Get-Content -Path .\elevi.csv

Ieșire în terminal

"Nume","Oras","Nota"
"Ana","Iași","9"
"Mihai","Cluj","7"

Exemplul 2: Fișier pentru Excel în română

Separator ; și UTF-8 cu BOM, ca Excel să împartă coloanele și să afișeze corect „ș”.

$elevi = @(
    [pscustomobject]@{ Nume = 'Ana'; Oras = 'Iași'; Nota = 9 }
    [pscustomobject]@{ Nume = 'Mihai'; Oras = 'Cluj'; Nota = 7 }
)
$elevi | Export-Csv -Path C:\Proiecte\facturi\elevi.csv -Delimiter ';' -Encoding utf8BOM
Get-Content -Path C:\Proiecte\facturi\elevi.csv

Ieșire în terminal

"Nume";"Oras";"Nota"
"Ana";"Iași";"9"
"Mihai";"Cluj";"7"

Exemplul 3: Ghilimele doar unde e nevoie (PowerShell 7.0+)

Cu -UseQuotes AsNeeded, doar adresa, care conține o virgulă, rămâne între ghilimele.

[pscustomobject]@{ Client = 'Cafenea Iași'; Adresa = 'Str. Lăpușneanu 12, Iași'; Total = 350 } |
    Export-Csv -Path .\clienti.csv -UseQuotes AsNeeded
Get-Content -Path .\clienti.csv

Ieșire în terminal

Client,Adresa,Total
Cafenea Iași,"Str. Lăpușneanu 12, Iași",350

Greșeli frecvente

  • Format-Table | Export-Csv: fișierul conține obiecte de formatare, nu datele. Folosește Select-Object pentru coloane, apoi Export-Csv.
  • Fișier deschis în Excel cu toate datele într-o singură coloană sau cu diacritice afișate greșit: lipsește -Delimiter ';' (sau -UseCulture) ori -Encoding utf8BOM.
  • -Append cu obiecte care au alte proprietăți decât antetul dă eroare; -Force o ocolește, dar coloanele necunoscute se pierd.
  • Scripturi scrise pentru 5.1 rulate în 7 (sau invers): în 5.1 adaugă -NoTypeInformation și -Encoding UTF8, altfel primești rândul #TYPE și diacritice pierdute.

Comenzi înrudite

  • Import-Csv: Citește un fișier CSV și creează câte un obiect pentru fiecare rând, cu proprietăți numite după coloanele din antet.
  • Select-Object: Alege doar anumite proprietăți ale obiectelor, adaugă proprietăți calculate sau păstrează primele, ultimele ori unicele elemente.
  • Format-Table: Afișează obiectele ca tabel, cu coloanele alese de tine, inclusiv coloane calculate.
  • 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.
  • ConvertTo-Json: Transformă obiecte PowerShell într-un șir JSON, de exemplu pentru un fișier de configurare sau corpul unei cereri către un API.