ConvertTo-Csv
Převede objekty .NET na řadu řetězců hodnot oddělených znakem (CSV).
Syntaxe
ConvertTo-Csv
[-InputObject] <PSObject>
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <PSObject>
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
Description
Rutina ConvertTo-CSV
vrátí řadu řetězců hodnot oddělených znakem (CSV), které představují objekty, které odešlete. Potom můžete použít rutinu ConvertFrom-Csv
k opětovnému vytvoření objektů z řetězců CSV. Objekty převedené ze souboru CSV jsou řetězcové hodnoty původních objektů, které obsahují hodnoty vlastností a žádné metody.
Pomocí rutiny Export-Csv
můžete převést objekty na řetězce CSV.
Export-CSV
se podobá ConvertTo-CSV
s tím rozdílem, že ukládá řetězce CSV do souboru.
Rutina ConvertTo-CSV
má parametry pro zadání jiného oddělovače než čárky nebo použití aktuální jazykové verze jako oddělovače.
Příklady
Příklad 1: Převod objektu na CSV
Tento příklad převede objekt Process na řetězec CSV.
Get-Process -Name pwsh | ConvertTo-Csv -NoTypeInformation
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"pwsh","8","950","2204001161216","100925440","59686912","67104", ...
Rutina Get-Process
získá objekt Process a pomocí parametru Name určí proces PowerShellu. Objekt procesu se odešle do kanálu do rutiny ConvertTo-CSV
. Rutina ConvertTo-CSV
převede objekt na řetězce CSV. Parametr NoTypeInformation odebere hlavičku informací #TYPE z výstupu CSV a není vyžadována v PowerShellu 6.
Příklad 2: Převod objektu DateTime na CSV
Tento příklad převede objekt DateTime na řetězec CSV.
$Date = Get-Date
ConvertTo-Csv -InputObject $Date -Delimiter ';' -NoTypeInformation
"DisplayHint";"DateTime";"Date";"Day";"DayOfWeek";"DayOfYear";"Hour";"Kind";"Millisecond";"Minute";"Month";"Second";"Ticks";"TimeOfDay";"Year"
"DateTime";"Friday, January 4, 2019 14:40:51";"1/4/2019 00:00:00";"4";"Friday";"4";"14";"Local";"711";"40";"1";"51";"636822096517114991";"14:40:51.7114991";"2019"
Rutina Get-Date
získá objekt DateTime a uloží ho do proměnné $Date
. Rutina ConvertTo-Csv
převede objekt DateTime na řetězce. Parametr InputObject používá objekt DateTime uložený v proměnné $Date
. Parametr oddělovače určuje středník pro oddělení řetězcových hodnot. Parametr NoTypeInformation odebere hlavičku informací #TYPE z výstupu CSV a není vyžadována v PowerShellu 6.
Příklad 3: Převod protokolu událostí PowerShellu na CSV
Tento příklad převede protokol událostí Windows pro PowerShell na řadu řetězců CSV.
(Get-Culture).TextInfo.ListSeparator
Get-WinEvent -LogName 'PowerShellCore/Operational' |
ConvertTo-Csv -UseCulture -NoTypeInformation
,
"Message","Id","Version","Qualifiers","Level","Task","Opcode","Keywords","RecordId", ...
"Error Message = System error""4100","1",,"3","106","19","0","31716","PowerShellCore", ...
Rutina Get-Culture
používá vnořené vlastnosti TextInfo a ListSeparator a zobrazí výchozí oddělovač seznamu aktuální jazykové verze. Rutina Get-WinEvent
získá objekty protokolu událostí a pomocí parametru LogName určí název souboru protokolu. Objekty protokolu událostí se odesílají do kanálu do rutiny ConvertTo-Csv
. Rutina ConvertTo-Csv
převede objekty protokolu událostí na řadu řetězců CSV. Parametr UseCulture používá jako oddělovač výchozího seznamu aktuální jazykové verze. Parametr NoTypeInformation odebere hlavičku informací #TYPE z výstupu CSV a není vyžadována v PowerShellu 6.
Příklad 4: Převod na CSV s uvozovkami kolem dvou sloupců
Tento příklad převede objekt DateTime na řetězec CSV.
Get-Date | ConvertTo-Csv -QuoteFields "DateTime","Date"
DisplayHint,"DateTime","Date",Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:27:34 AM","8/22/2019 12:00:00 AM",22,Thursday,234,11,Local,569,27,8,34,637020700545699784,11:27:34.5699784,2019
Příklad 5: Převod na CSV s uvozovkami pouze v případě potřeby
Tento příklad převede objekt DateTime na řetězec CSV.
Get-Date | ConvertTo-Csv -UseQuotes AsNeeded
DisplayHint,DateTime,Date,Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:31:00 AM",8/22/2019 12:00:00 AM,22,Thursday,234,11,Local,713,31,8,0,637020702607132640,11:31:00.7132640,2019
Příklad 6: Převod hashovatelných tabulek na CSV
Když v PowerShellu 7.2 a novějším převedete hashtables na CSV, klíče první hashovatelné tabulky se serializují a použijí se jako hlavičky ve výstupu.
$person1 = @{
Name = 'John Smith'
Number = 1
}
$person2 = @{
Name = 'Jane Smith'
Number = 2
}
$allPeople = $person1, $person2
$allPeople | ConvertTo-Csv
"Name","Number"
"John Smith","1"
"Jane Smith","2"
Příklad 7: Převod hashovatelných tabulek na CSV s dalšími vlastnostmi
Když v PowerShellu 7.2 a novějším převedete hashtable s dalšími vlastnostmi přidanými pomocí Add-Member
nebo Select-Object
další vlastnosti se také přidají jako záhlaví ve výstupu CSV.
$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"
Každá hashtable má vlastnost s názvem ExtraProp
přidána Add-Member
a pak převedena na CSV. Uvidíte, ExtraProp
je teď ve výstupu záhlaví.
Pokud má přidaná vlastnost stejný název jako klíč z hashtable, má klíč přednost a pouze klíč se převede na sdílený svazek clusteru.
Parametry
-Delimiter
Určuje oddělovač pro oddělení hodnot vlastností v řetězcích CSV. Výchozí hodnota je čárka (,
). Zadejte znak, například dvojtečku (:
). Pokud chcete zadat středník (;
), uzavřete ho do jednoduchých uvozovek.
Typ: | Char |
Position: | 1 |
Default value: | comma (,) |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-IncludeTypeInformation
Pokud je tento parametr použit první řádek výstupu obsahuje #TYPE
následovaný plně kvalifikovaným názvem typu objektu. Například #TYPE System.Diagnostics.Process
.
Tento parametr byl představen v PowerShellu 6.0.
Typ: | SwitchParameter |
Aliasy: | ITI |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-InputObject
Určuje objekty, které jsou převedeny na řetězce CSV. Zadejte proměnnou obsahující objekty nebo zadejte příkaz nebo výraz, který objekty získá. Objekty lze také pipetovat do ConvertTo-CSV
.
Typ: | PSObject |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-NoHeader
Při použití tohoto parametru rutina do výstupu nezapíše řádek záhlaví obsahující názvy sloupců.
Tento parametr byl přidán v PowerShellu 7.4.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-NoTypeInformation
Odebere ze výstupu hlavičku #TYPE
informací. Tento parametr se stal výchozím nastavením v PowerShellu 6.0 a je součástí zpětné kompatibility.
Typ: | SwitchParameter |
Aliasy: | NTI |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-QuoteFields
Určuje názvy sloupců, které mají být citovány. Při použití tohoto parametru jsou uvozovány pouze zadané sloupce. Tento parametr byl přidán v PowerShellu 7.0.
Typ: | String[] |
Aliasy: | QF |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-UseCulture
Použije oddělovač seznamu pro aktuální jazykovou verzi jako oddělovač položek. K vyhledání oddělovače seznamu pro jazykovou verzi použijte následující příkaz: (Get-Culture).TextInfo.ListSeparator
.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-UseQuotes
Určuje, kdy se v souborech CSV použijí uvozovky. Možné hodnoty:
- Nikdy - nic neuvozujte
- Vždy – uvozovek vše (výchozí chování)
- AsNeeded – pouze pole uvozovek, která obsahují znak oddělovače, dvojité uvozovky nebo znak nového řádku
Tento parametr byl přidán v PowerShellu 7.0.
Typ: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Aliasy: | UQ |
Position: | Named |
Default value: | Always |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Do této rutiny můžete připojit jakýkoli objekt, který má adaptér ETS (Extended Type System).
Výstupy
Tato rutina vrátí jeden nebo více řetězců představujících každý převedený objekt.
Poznámky
Ve formátu CSV je každý objekt reprezentován seznamem vlastností odděleným znakem. Hodnoty vlastností se převedou na řetězce pomocí metody ToString() objektu. Řetězce jsou reprezentovány názvem hodnoty vlastnosti.
ConvertTo-CSV
neexportuje metody objektu.
Řetězce CSV jsou výstupem následujícím způsobem:
- Pokud se používá IncludeTypeInformation, první řetězec se skládá z #TYPE následovaný plně kvalifikovaným názvem typu objektu. Například #TYPE System.Diagnostics.Process.
- Pokud IncludeTypeInformation není použit první řetězec obsahuje záhlaví sloupců. Záhlaví obsahují názvy vlastností prvního objektu jako seznam oddělený znakem.
- Zbývající řetězce obsahují seznamy vlastností jednotlivých objektů oddělené znakem.
Počínaje PowerShellem 6.0 výchozí chování ConvertTo-CSV
není zahrnout informace #TYPE do souboru CSV a NoTypeInformation implicitně.
IncludeTypeInformation lze použít k zahrnutí informací o #TYPE a emulaci výchozího chování ConvertTo-CSV
před PowerShellem 6.0.
Když odešlete více objektů do ConvertTo-CSV
, ConvertTo-CSV
objednávky řetězce na základě vlastností prvního objektu, který odešlete. Pokud zbývající objekty nemají jednu ze zadaných vlastností, hodnota vlastnosti tohoto objektu je Null, jak je reprezentováno dvěma po sobě jdoucími čárkami. Pokud zbývající objekty mají další vlastnosti, budou tyto hodnoty vlastností ignorovány.