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>]
[-NoHeader]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <PSObject>
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
Opis
Polecenie cmdlet ConvertTo-CSV
zwraca serię ciągów wartości rozdzielanych znakami (CSV), które reprezentują przesyłane obiekty. Następnie możesz użyć polecenia cmdlet ConvertFrom-Csv
, 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ć polecenia cmdlet Export-Csv
, 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 cmdlet ConvertTo-CSV
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 cmdlet Get-Process
pobiera obiekt procesu i używa parametru Name w celu określenia procesu programu PowerShell. Obiekt procesu jest wysyłany w dół potoku do polecenia cmdlet ConvertTo-CSV
. Polecenie cmdlet ConvertTo-CSV
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
Ten przykład konwertuje obiekt DateTime 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 cmdlet Get-Date
pobiera obiekt DateTime i zapisuje go w zmiennej $Date
. Polecenie cmdlet ConvertTo-Csv
konwertuje obiekt DateTime na ciągi. Parametr InputObject używa obiektu DateTime przechowywanego w zmiennej $Date
. Ogranicznik parametr 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 cmdlet Get-Culture
używa zagnieżdżonych właściwości TextInfo i ListSeparator i wyświetla domyślny separator listy bieżącej kultury. Polecenie cmdlet Get-WinEvent
pobiera obiekty dziennika zdarzeń i używa parametru LogName w celu określenia nazwy pliku dziennika. Obiekty dziennika zdarzeń są wysyłane w dół potoku do polecenia cmdlet ConvertTo-Csv
. Polecenie cmdlet ConvertTo-Csv
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
Ten przykład konwertuje obiekt DateTime 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
Ten przykład konwertuje obiekt DateTime 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 z dodatkowymi właściwościami dodanymi za pomocą Add-Member
lub Select-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
dodana przez Add-Member
, a następnie przekonwertowana na wolumin CSV. Zobaczysz, ExtraProp
jest teraz nagłówkiem w danych wyjściowych.
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 (;
) należy go ująć w pojedynczy cudzysłów.
Typ: | Char |
Position: | 1 |
Domyślna wartość: | comma (,) |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-IncludeTypeInformation
Gdy ten parametr jest używany pierwszy wiersz danych wyjściowych zawiera #TYPE
po nim w pełni kwalifikowaną nazwę typu obiektu. Na przykład #TYPE System.Diagnostics.Process
.
Ten parametr został wprowadzony w programie PowerShell 6.0.
Typ: | SwitchParameter |
Aliasy: | ITI |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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ż potokować obiekty do ConvertTo-CSV
.
Typ: | PSObject |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-NoHeader
Gdy ten parametr jest używany, polecenie cmdlet nie zapisuje wiersza nagłówka zawierającego nazwy kolumn do danych wyjściowych.
Ten parametr został dodany w programie PowerShell 7.4.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-NoTypeInformation
Usuwa nagłówek informacji #TYPE
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.
Typ: | SwitchParameter |
Aliasy: | NTI |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | String[] |
Aliasy: | QF |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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
.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-UseQuotes
Określa, kiedy cudzysłowy są używane w plikach CSV. Możliwe wartości to:
- 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.
Typ: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Aliasy: | UQ |
Position: | Named |
Domyślna wartość: | Always |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać potok dowolny obiekt z kartą systemu rozszerzonego typu (ETS).
Dane wyjściowe
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() obiektu. 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 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 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ślne zachowanie ConvertTo-CSV
nie polega na dołączaniu #TYPE informacji w pliku CSV i NoTypeInformation.
IncludeTypeInformation można użyć do uwzględnienia informacji o #TYPE i emulowania domyślnego zachowania ConvertTo-CSV
przed programem PowerShell 6.0.
Podczas przesyłania wielu obiektów do ConvertTo-CSV
ConvertTo-CSV
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.