ConvertTo-Csv

Konwertuje obiekty .NET na serię ciągów wartości rozdzielanych znakami (CSV).

Składnia

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

Opis

Polecenie ConvertTo-CSV cmdlet zwraca serię ciągów wartości rozdzielanych znakami (CSV), które reprezentują przesyłane obiekty. Następnie możesz użyć ConvertFrom-Csv polecenia cmdlet , aby ponownie utworzyć obiekty z ciągów CSV. Obiekty konwertowane z pliku CSV są wartościami ciągów oryginalnych obiektów zawierających wartości właściwości i bez metod.

Możesz użyć Export-Csv polecenia cmdlet , aby przekonwertować obiekty na ciągi CSV. Export-CSV jest podobny do ConvertTo-CSV, z tą różnicą, że zapisuje ciągi CSV w pliku.

Polecenie ConvertTo-CSV cmdlet ma parametry, aby określić ogranicznik inny niż przecinek lub użyć bieżącej kultury jako ogranicznika.

Przykłady

Przykład 1. Konwertowanie obiektu na wolumin CSV

W tym przykładzie obiekt Process jest konwertowany na ciąg 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", ...

Polecenie Get-Process cmdlet pobiera obiekt Process i używa parametru Name do określenia procesu programu PowerShell. Obiekt procesu jest wysyłany w dół potoku ConvertTo-CSV do polecenia cmdlet. Polecenie ConvertTo-CSV cmdlet konwertuje obiekt na ciągi CSV. Parametr NoTypeInformation usuwa nagłówek informacji #TYPE z danych wyjściowych CSV i nie jest wymagany w programie PowerShell 6.

Przykład 2. Konwertowanie obiektu DateTime na csv

W tym przykładzie obiekt DateTime jest konwertowany na ciąg 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"

Polecenie Get-Date cmdlet pobiera obiekt DateTime i zapisuje go w zmiennej $Date . Polecenie ConvertTo-Csv cmdlet konwertuje obiekt DateTime na ciągi. Parametr InputObject używa obiektu DateTime przechowywanego w zmiennej $Date . Parametr ogranicznika określa średnik, aby oddzielić wartości ciągu. Parametr NoTypeInformation usuwa nagłówek informacji #TYPE z danych wyjściowych CSV i nie jest wymagany w programie PowerShell 6.

Przykład 3. Konwertowanie dziennika zdarzeń programu PowerShell na wolumin CSV

W tym przykładzie dziennik zdarzeń systemu Windows dla programu PowerShell jest konwertowany na serię ciągów 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", ...

Polecenie Get-Culture cmdlet używa zagnieżdżonych właściwości TextInfo i ListSeparator i wyświetla domyślny separator listy bieżącej kultury. Polecenie Get-WinEvent cmdlet pobiera obiekty dziennika zdarzeń i używa parametru LogName do określenia nazwy pliku dziennika. Obiekty dziennika zdarzeń są wysyłane w dół potoku ConvertTo-Csv do polecenia cmdlet. Polecenie ConvertTo-Csv cmdlet konwertuje obiekty dziennika zdarzeń na serię ciągów CSV. Parametr UseCulture używa domyślnego separatora listy bieżącej kultury jako ogranicznika. Parametr NoTypeInformation usuwa nagłówek informacji #TYPE z danych wyjściowych CSV i nie jest wymagany w programie PowerShell 6.

Przykład 4: Konwertowanie na plik CSV z cudzysłowami wokół dwóch kolumn

W tym przykładzie obiekt DateTime jest konwertowany na ciąg 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

Przykład 5. Konwertowanie na plik CSV przy użyciu cudzysłowów tylko wtedy, gdy jest to konieczne

W tym przykładzie obiekt DateTime jest konwertowany na ciąg 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

Przykład 6. Konwertowanie tabel skrótów na wolumin CSV

W programie PowerShell w wersji 7.2 lub nowszej po przekonwertowaniu tabel skrótów na wolumin CSV klucze pierwszego tabeli skrótu są serializowane i używane jako nagłówki w danych wyjściowych.

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

Przykład 7. Konwertowanie tabel skrótów na woluminy CSV z dodatkowymi właściwościami

W programie PowerShell 7.2 lub nowszym podczas konwertowania tabeli skrótowej zawierającej dodatkowe właściwości dodane lub Add-MemberSelect-Object dodatkowe właściwości są również dodawane jako nagłówek w danych wyjściowych CSV.

$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv

"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"

Każda tabela skrótów ma właściwość o nazwie ExtraProp dodanej przez Add-Member , a następnie przekonwertowana na wolumin CSV. Zobaczysz ExtraProp , że w danych wyjściowych jest teraz nagłówek.

Jeśli dodana właściwość ma taką samą nazwę jak klucz z tabeli skrótu, klucz ma pierwszeństwo i tylko klucz jest konwertowany na wolumin CSV.

Parametry

-Delimiter

Określa ogranicznik, aby oddzielić wartości właściwości w ciągach CSV. Wartość domyślna to przecinek (,). Wprowadź znak, taki jak dwukropek (:). Aby określić średnik (;) ujęć go w pojedynczy cudzysłów.

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeTypeInformation

Gdy ten parametr jest używany pierwszy wiersz danych wyjściowych, #TYPE po którym następuje w pełni kwalifikowana nazwa typu obiektu. Na przykład #TYPE System.Diagnostics.Process.

Ten parametr został wprowadzony w programie PowerShell 6.0.

Type:SwitchParameter
Aliases:ITI
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Określa obiekty, które są konwertowane na ciągi CSV. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty. Można również przekazać obiekty potokowe do ConvertTo-CSVobiektu .

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoTypeInformation

Usuwa #TYPE nagłówek informacji z danych wyjściowych. Ten parametr stał się wartością domyślną w programie PowerShell 6.0 i został uwzględniony w celu zapewnienia zgodności z poprzednimi wersjami.

Type:SwitchParameter
Aliases:NTI
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-QuoteFields

Określa nazwy kolumn, które powinny być cytowane. Jeśli ten parametr jest używany tylko określone kolumny są cytowane. Ten parametr został dodany w programie PowerShell 7.0.

Type:String[]
Aliases:QF
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseCulture

Używa separatora listy dla bieżącej kultury jako ogranicznika elementu. Aby znaleźć separator listy dla kultury, użyj następującego polecenia: (Get-Culture).TextInfo.ListSeparator.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseQuotes

Określa, kiedy cudzysłowy są używane w plikach CSV. Dopuszczalne wartości:

  • Nigdy — nic nie cytuj
  • Zawsze — cytuj wszystko (zachowanie domyślne)
  • AsNeeded — tylko pola cudzysłowu zawierające znak ogranicznika, podwójny cudzysłów lub znak nowego wiersza

Ten parametr został dodany w programie PowerShell 7.0.

Type:Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind
Aliases:UQ
Position:Named
Default value:Always
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

PSObject

Do tego polecenia cmdlet można przekazać potok dowolny obiekt z kartą systemu rozszerzonego typu (ETS).

Dane wyjściowe

String

To polecenie cmdlet zwraca jeden lub więcej ciągów reprezentujących każdy przekonwertowany obiekt.

Uwagi

W formacie CSV każdy obiekt jest reprezentowany przez rozdzielaną znakami listę jego wartości właściwości. Wartości właściwości są konwertowane na ciągi przy użyciu metody ToString(). Ciągi są reprezentowane przez nazwę wartości właściwości. ConvertTo-CSV nie eksportuje metod obiektu.

Ciągi CSV są danymi wyjściowymi w następujący sposób:

  • Jeśli jest używana funkcja IncludeTypeInformation, pierwszy ciąg składa się z #TYPE, po którym następuje w pełni kwalifikowana nazwa typu obiektu. Na przykład #TYPE System.Diagnostics.Process.
  • Jeśli parametr IncludeTypeInformation nie jest używany, pierwszy ciąg zawiera nagłówki kolumn. Nagłówki zawierają nazwy właściwości pierwszego obiektu jako listę rozdzielaną znakami.
  • Pozostałe ciągi zawierają rozdzielane znakami listy wartości właściwości każdego obiektu.

Począwszy od programu PowerShell 6.0 domyślnym zachowaniem programu ConvertTo-CSV jest nie uwzględnianie #TYPE informacji w pliku CSV i noTypeInformation . Funkcja IncludeTypeInformation może służyć do uwzględnienia informacji o #TYPE i emulowania domyślnego zachowania wcześniejszego ConvertTo-CSV niż program PowerShell 6.0.

Po przesłaniu wielu obiektów do ConvertTo-CSVprogramu ConvertTo-CSV polecenie porządkuje ciągi na podstawie właściwości pierwszego przesyłanego obiektu. Jeśli pozostałe obiekty nie mają jednej z określonych właściwości, wartość właściwości tego obiektu ma wartość Null, reprezentowana przez dwa kolejne przecinki. Jeśli pozostałe obiekty mają dodatkowe właściwości, te wartości właściwości są ignorowane.