ConvertTo-Csv
Konvertiert .NET-Objekte in eine Reihe von CSV-Zeichenfolgen (Character-Separated Value).
Syntax
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>]
Beschreibung
Das ConvertTo-CSV
Cmdlet gibt eine Reihe von CSV-Zeichenfolgen (Durch Trennzeichen getrennte Werte) zurück, die die von Ihnen übermittelten Objekte darstellen. Anschließend können Sie das ConvertFrom-Csv
Cmdlet verwenden, um Objekte aus den CSV-Zeichenfolgen neu zu erstellen. Die aus CSV konvertierten Objekte sind Zeichenfolgenwerte der ursprünglichen Objekte, die Eigenschaftswerte und keine Methoden enthalten.
Sie können das Export-Csv
Cmdlet verwenden, um Objekte in CSV-Zeichenfolgen zu konvertieren. Export-CSV
ConvertTo-CSV
ähnelt , mit der Ausnahme, dass die CSV-Zeichenfolgen in einer Datei gespeichert werden.
Das ConvertTo-CSV
Cmdlet verfügt über Parameter, um ein anderes Trennzeichen als ein Komma anzugeben oder die aktuelle Kultur als Trennzeichen zu verwenden.
Beispiele
Beispiel 1: Konvertieren eines Objekts in CSV
In diesem Beispiel wird ein Process-Objekt in eine CSV-Zeichenfolge konvertiert.
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", ...
Das Get-Process
Cmdlet ruft das Process-Objekt ab und verwendet den Parameter Name , um den PowerShell-Prozess anzugeben. Das Prozessobjekt wird in der Pipeline an das ConvertTo-CSV
Cmdlet gesendet. Das ConvertTo-CSV
Cmdlet konvertiert das Objekt in CSV-Zeichenfolgen. Der Parameter NoTypeInformation entfernt den #TYPE-Informationsheader aus der CSV-Ausgabe und ist in PowerShell 6 nicht erforderlich.
Beispiel 2: Konvertieren eines DateTime-Objekts in CSV
In diesem Beispiel wird ein DateTime-Objekt in eine CSV-Zeichenfolge konvertiert.
$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"
Das Get-Date
Cmdlet ruft das DateTime-Objekt ab und speichert es in der $Date
Variablen. Das ConvertTo-Csv
Cmdlet konvertiert das DateTime-Objekt in Zeichenfolgen. Der InputObject-Parameter verwendet das in der Variablen gespeicherte DateTime-Objekt$Date
. Der Parameter Delimiter gibt ein Semikolon an, um die Zeichenfolgenwerte zu trennen. Der Parameter NoTypeInformation entfernt den #TYPE-Informationsheader aus der CSV-Ausgabe und ist in PowerShell 6 nicht erforderlich.
Beispiel 3: Konvertieren des PowerShell-Ereignisprotokolls in CSV
In diesem Beispiel wird das Windows-Ereignisprotokoll für PowerShell in eine Reihe von CSV-Zeichenfolgen konvertiert.
(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", ...
Das Get-Culture
Cmdlet verwendet die geschachtelten Eigenschaften TextInfo und ListSeparator und zeigt das Standardlistentrennzeichen der aktuellen Kultur an. Das Get-WinEvent
Cmdlet ruft die Ereignisprotokollobjekte ab und verwendet den LogName-Parameter , um den Namen der Protokolldatei anzugeben. Die Ereignisprotokollobjekte werden an das ConvertTo-Csv
Cmdlet gesendet. Das ConvertTo-Csv
Cmdlet konvertiert die Ereignisprotokollobjekte in eine Reihe von CSV-Zeichenfolgen. Der UseCulture-Parameter verwendet das Standardlistentrennzeichen der aktuellen Kultur als Trennzeichen. Der Parameter NoTypeInformation entfernt den #TYPE-Informationsheader aus der CSV-Ausgabe und ist in PowerShell 6 nicht erforderlich.
Beispiel 4: Konvertieren in CSV mit Anführungszeichen um zwei Spalten
In diesem Beispiel wird ein DateTime-Objekt in eine CSV-Zeichenfolge konvertiert.
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
Beispiel 5: Konvertieren in CSV mit Anführungszeichen nur bei Bedarf
In diesem Beispiel wird ein DateTime-Objekt in eine CSV-Zeichenfolge konvertiert.
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
Parameter
-Delimiter
Gibt das Trennzeichen an, um die Eigenschaftswerte in CSV-Zeichenfolgen zu trennen. Der Standardwert ist ein Komma (,
). Geben Sie ein Zeichen ein, z. B. einen Doppelpunkt (:
). Um ein Semikolon (;
) anzugeben, schließen Sie es in einfache Anführungszeichen ein.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeTypeInformation
Wenn dieser Parameter verwendet wird, enthält die erste Zeile der Ausgabe #TYPE gefolgt vom vollqualifizierten Namen des Objekttyps. Beispiel : #TYPE System.Diagnostics.Process.
Dieser Parameter wurde in PowerShell 6.0 eingeführt.
Type: | SwitchParameter |
Aliases: | ITI |
Position: | Named |
Default value: | #TYPE <Object> |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Gibt die Objekte an, die in CSV-Zeichenfolgen konvertiert werden. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, durch den die Objekte abgerufen werden. Sie können auch Objekte an übergeben ConvertTo-CSV
.
Type: | PSObject |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoTypeInformation
Entfernt den #TYPE-Informationsheader aus der Ausgabe. Dieser Parameter wurde zur Standardeinstellung in PowerShell 6.0 und ist aus Gründen der Abwärtskompatibilität enthalten.
Type: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-QuoteFields
Gibt die Namen der Spalten an, die in Anführungszeichen gesetzt werden sollen. Wenn dieser Parameter verwendet wird, werden nur die angegebenen Spalten in Anführungszeichen gesetzt. Dieser Parameter wurde in PowerShell 7.0 hinzugefügt.
Type: | String[] |
Aliases: | QF |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCulture
Verwendet das Listentrennzeichen für die aktuelle Kultur als Elementtrennzeichen. Verwenden Sie den folgenden Befehl, um das Listentrennzeichen für eine Kultur zu suchen: (Get-Culture).TextInfo.ListSeparator
.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseQuotes
Gibt an, wann Anführungszeichen in den CSV-Dateien verwendet werden. Mögliche Werte:
- Nie - nichts zitieren
- Immer – Anführungszeichen (Standardverhalten)
- AsNeeded: Nur Anführungszeichenfelder, die ein Trennzeichen enthalten
Dieser Parameter wurde in PowerShell 7.0 hinzugefügt.
Type: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Aliases: | UQ |
Position: | Named |
Default value: | Always |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können jedes Objekt, das über einen ETS-Adapter (Extended Type System) verfügt, an übergeben ConvertTo-CSV
.
Ausgaben
Die CSV-Ausgabe wird als Auflistung von Zeichenfolgen zurückgegeben.
Hinweise
Im CSV-Format wird jedes Objekt durch eine durch Trennzeichen getrennte Liste seiner Eigenschaftswerte dargestellt. Die Eigenschaftswerte werden mithilfe der ToString() -Methode des Objekts in Zeichenfolgen konvertiert. Die Zeichenfolgen werden durch den Namen des Eigenschaftswerts dargestellt. ConvertTo-CSV
exportiert die Methoden des Objekts nicht.
Die CSV-Zeichenfolgen werden wie folgt ausgegeben:
- Wenn IncludeTypeInformation verwendet wird, besteht die erste Zeichenfolge aus #TYPE gefolgt vom vollqualifizierten Namen des Objekttyps. Beispiel : #TYPE System.Diagnostics.Process.
- Wenn IncludeTypeInformation nicht verwendet wird, enthält die erste Zeichenfolge die Spaltenüberschriften. Die Header enthalten die Eigenschaftennamen des ersten Objekts als durch Trennzeichen getrennte Liste.
- Die verbleibenden Zeichenfolgen enthalten durch Trennzeichen getrennte Listen der Eigenschaftswerte jedes Objekts.
Ab PowerShell 6.0 besteht das Standardverhalten von ConvertTo-CSV
darin, die #TYPE Informationen nicht in die CSV-Datei einzuschließen, und NoTypeInformation ist impliziert. IncludeTypeInformation kann verwendet werden, um die #TYPE Informationen einzuschließen und das Standardverhalten von ConvertTo-CSV
vor PowerShell 6.0 zu emulieren.
Wenn Sie mehrere Objekte an ConvertTo-CSV
übermitteln, ConvertTo-CSV
ordnet die Zeichenfolgen basierend auf den Eigenschaften des ersten Objekts, das Sie übermitteln, an. Wenn die verbleibenden Objekte nicht über eine der angegebenen Eigenschaften verfügen, ist der Eigenschaftswert dieses Objekts Null, wie durch zwei aufeinanderfolgende Kommas dargestellt. Wenn die übrigen Objekte zusätzliche Eigenschaften aufweisen, werden diese Eigenschaftswerte ignoriert.