Sdílet prostřednictvím


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. Pak můžete pomocí rutiny ConvertFrom-Csv znovu vytvořit objekty 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í této Export-Csv rutiny můžete převést objekty na řetězce CSV. Export-CSV je podobná , ConvertTo-CSVs tím rozdílem, že ukládá řetězce CSV do souboru.

Rutina ConvertTo-CSV má parametry k určení 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 použije parametr Name k určení procesu PowerShellu. Objekt procesu se odešle 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 $Date do proměnné. Rutina ConvertTo-Csv převede objekt DateTime na řetězce. Parametr InputObject používá objekt DateTime uložený v $Date proměnné. Parametr Oddělovač 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 použije parametr LogName k určení názvu souboru protokolu. Objekty protokolu událostí se do rutiny odesílají do kanálu 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, který obsahuje další vlastnosti přidané spolu s dalšími vlastnostmi Add-Member , nebo Select-Object se do výstupu CSV přidají jako záhlaví.

$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 pojmenovanou ExtraProp podle Add-Member a pak se převede na CSV. Ve výstupu je ExtraProp teď vidět záhlaví.

Pokud přidaná vlastnost má stejný název jako klíč z hashtable, má klíč přednost a pouze klíč se převede na CSV.

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 #TYPE záhlaví informací z výstupu. 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 jsou:

  • 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

PSObject

Do této rutiny můžete připojit jakýkoli objekt, který má adaptér ETS (Extended Type System).

Výstupy

String

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í jsou převedeny na řetězce pomocí toString() objektu metoda. Ř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 se předpokládá. IncludeTypeInformation lze použít k zahrnutí informací #TYPE a emulaci výchozího ConvertTo-CSV chování před PowerShellem 6.0.

Když odešlete více objektů, ConvertTo-CSVConvertTo-CSV objednávky řetězců 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.