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șteSelect-Objectpentru coloane, apoiExport-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. -Appendcu obiecte care au alte proprietăți decât antetul dă eroare;-Forceo 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.