Dela via


ConvertTo-Csv

Konverterar .NET-objekt till en serie teckenavgränsade värdesträngar (CSV).

Syntax

Delimiter (Standard)

ConvertTo-Csv
    [-InputObject] <PSObject>
    [[-Delimiter] <Char>]
    [-IncludeTypeInformation]
    [-NoTypeInformation]
    [-QuoteFields <String[]>]
    [-UseQuotes <QuoteKind>]
    [-NoHeader]
    [<CommonParameters>]

UseCulture

ConvertTo-Csv
    [-InputObject] <PSObject>
    [-UseCulture]
    [-IncludeTypeInformation]
    [-NoTypeInformation]
    [-QuoteFields <String[]>]
    [-UseQuotes <QuoteKind>]
    [-NoHeader]
    [<CommonParameters>]

Description

Cmdleten ConvertTo-Csv returnerar en serie teckenavgränsade värdesträngar (CSV) som representerar de objekt som du skickar. Du kan sedan använda cmdleten ConvertFrom-Csv för att återskapa objekt från CSV-strängarna. Objekten som konverteras från CSV är strängvärden för de ursprungliga objekten som innehåller egenskapsvärden och inga metoder.

Du kan använda cmdleten Export-Csv för att konvertera objekt till CSV-strängar. Export-Csv liknar ConvertTo-Csv, förutom att csv-strängarna sparas i en fil.

Cmdleten ConvertTo-Csv har parametrar för att ange en avgränsare som inte är ett kommatecken eller använda den aktuella kulturen som avgränsare.

Exempel

Exempel 1: Konvertera ett objekt till CSV

I det här exemplet konverteras ett Process-objekt till en CSV-sträng.

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", ...

Cmdleten Get-Process hämtar objektet Process och använder parametern Name för att ange PowerShell-processen. Processobjektet skickas ned i pipelinen till cmdleten ConvertTo-Csv. Cmdleten ConvertTo-Csv konverterar objektet till CSV-strängar. Parametern NoTypeInformation tar bort #TYPE informationshuvudet från CSV-utdata och krävs inte i PowerShell 6.

Exempel 2: Konvertera ett DateTime-objekt till CSV

I det här exemplet konverteras ett DateTime--objekt till en CSV-sträng.

$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"

Cmdleten Get-Date hämtar objektet DateTime och sparar det i variabeln $Date. Cmdleten ConvertTo-Csv konverterar DateTime--objektet till strängar. Parametern InputObject använder objektet DateTime som lagras i variabeln $Date. Parametern Avgränsare anger ett semikolon som avgränsar strängvärdena. Parametern NoTypeInformation tar bort #TYPE informationshuvudet från CSV-utdata och krävs inte i PowerShell 6.

Exempel 3: Konvertera PowerShell-händelseloggen till CSV

I det här exemplet konverteras Windows-händelseloggen för PowerShell till en serie CSV-strängar.

(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", ...

Cmdleten Get-Culture använder kapslade egenskaper TextInfo och ListSeparator och visar den aktuella kulturens standardlistavgränsare. Cmdleten Get-WinEvent hämtar händelseloggobjekten och använder parametern LogName för att ange loggfilens namn. Händelseloggobjekten skickas ned i pipelinen till cmdleten ConvertTo-Csv. Cmdleten ConvertTo-Csv konverterar händelseloggobjekten till en serie CSV-strängar. Parametern UseCulture använder den aktuella kulturens standardlistavgränsare som avgränsare. Parametern NoTypeInformation tar bort #TYPE informationshuvudet från CSV-utdata och krävs inte i PowerShell 6.

Exempel 4: Konvertera till CSV med citattecken runt två kolumner

I det här exemplet konverteras ett DateTime--objekt till en CSV-sträng.

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

Exempel 5: Konvertera till CSV med citattecken endast när det behövs

I det här exemplet konverteras ett DateTime--objekt till en CSV-sträng.

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

Exempel 6: Konvertera hashtables till CSV

När du konverterar hashtables till CSV i PowerShell 7.2 och senare serialiseras nycklarna för den första hashtabellen och används som rubriker i utdata.

$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"

Exempel 7: Konvertera hashtables till CSV med ytterligare egenskaper

I PowerShell 7.2 och senare, när du konverterar en hashtable som har ytterligare egenskaper som lagts till med Add-Member eller Select-Object läggs även de ytterligare egenskaperna till som en rubrik i CSV-utdata.

$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"

Varje hashtable har en egenskap med namnet ExtraProp har lagts till av Add-Member och sedan konverterats till CSV. Du kan se ExtraProp nu är en rubrik i utdata.

Om en tillagd egenskap har samma namn som en nyckel från hashtabellen har nyckeln företräde och endast nyckeln konverteras till CSV.

Parametrar

-Delimiter

Anger avgränsaren för att avgränsa egenskapsvärdena i CSV-strängar. Standardvärdet är ett kommatecken (,). Ange ett tecken, till exempel ett kolon (:). Om du vill ange ett semikolon (;) omges det av enkla citattecken.

Parameteregenskaper

Typ:Char
Standardvärde:comma (,)
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

Delimiter
Position:1
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-IncludeTypeInformation

När den här parametern används innehåller den första raden i utdata #TYPE följt av objekttypens fullständigt kvalificerade namn. Till exempel #TYPE System.Diagnostics.Process.

Den här parametern introducerades i PowerShell 6.0.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False
Alias:ITI

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-InputObject

Anger de objekt som konverteras till CSV-strängar. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten. Du kan också skicka objekt till ConvertTo-Csv.

Parameteregenskaper

Typ:PSObject
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:0
Obligatorisk:True
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False

-NoHeader

När den här parametern används skriver cmdleten inte en rubrikrad som innehåller kolumnnamnen till utdata.

Den här parametern lades till i PowerShell 7.4.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-NoTypeInformation

Tar bort #TYPE informationsrubriken från utdata. Den här parametern blev standard i PowerShell 6.0 och ingår för bakåtkompatibilitet.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False
Alias:NTI

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-QuoteFields

Anger namnen på de kolumner som ska citeras. När den här parametern endast används citeras de angivna kolumnerna. Den här parametern lades till i PowerShell 7.0.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:QF

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-UseCulture

Använder listavgränsaren för den aktuella kulturen som objektavgränsare. Om du vill hitta listavgränsaren för en kultur använder du följande kommando: (Get-Culture).TextInfo.ListSeparator.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

UseCulture
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-UseQuotes

Anger när citattecken används i CSV-filerna. Möjliga värden är:

  • Aldrig - citera ingenting
  • Always – citera allt (standardbeteende)
  • AsNeededed – endast citatfält som innehåller ett avgränsartecken, dubbelcitat eller nytt radtecken

Den här parametern lades till i PowerShell 7.0.

Parameteregenskaper

Typ:Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind
Standardvärde:Always
Stöder jokertecken:False
DontShow:False
Alias:UQ

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

Indata

PSObject

Du kan skicka alla objekt som har ett ETS-kort (Extended Type System) till den här cmdleten.

Utdata

String

Den här cmdleten returnerar en eller flera strängar som representerar varje konverterat objekt.

Kommentarer

I CSV-format representeras varje objekt av en teckenavgränsad lista över dess egenskapsvärde. Egenskapsvärdena konverteras till strängar med hjälp av objektets ToString() metod. Strängarna representeras av egenskapsvärdets namn. ConvertTo-Csv exporterar inte objektets metoder.

CSV-strängarna matas ut på följande sätt:

  • Om IncludeTypeInformation- används består den första strängen av #TYPE följt av objekttypens fullständigt kvalificerade namn. Till exempel #TYPE System.Diagnostics.Process.
  • Om IncludeTypeInformation inte används innehåller den första strängen kolumnrubrikerna. Rubrikerna innehåller det första objektets egenskapsnamn som en teckenavgränsad lista.
  • De återstående strängarna innehåller teckenavgränsade listor över varje objekts egenskapsvärden.

Från och med PowerShell 6.0 är standardbeteendet för ConvertTo-Csv att inte inkludera #TYPE information i CSV och NoTypeInformation är underförstått. IncludeTypeInformation kan användas för att inkludera #TYPE information och emulera standardbeteendet för ConvertTo-Csv före PowerShell 6.0.

När du skickar flera objekt till ConvertTo-Csvbeställer ConvertTo-Csv strängarna baserat på egenskaperna för det första objektet som du skickar. Om de återstående objekten inte har någon av de angivna egenskaperna är egenskapsvärdet för objektet Null, vilket representeras av två kommatecken i följd. Om de återstående objekten har ytterligare egenskaper ignoreras dessa egenskapsvärden.