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 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-Member
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
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.
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, #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.
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ż przekazać obiekty potokowe do ConvertTo-CSV
obiektu .
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 #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.
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. 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.
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(). 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-CSV
programu 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.