Konvertiert Objekteigenschaften in einer CSV-Datei (Comma-Separated Value) in CSV-Versionen der ursprünglichen Objekte.
Syntax
Import-CSV [[-Delimiter] <char>] [-Path] <string[]> [-Header <string[]>] [<CommonParameters>] Import-CSV -UseCulture [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
Beschreibung
Das Cmdlet "Import-CSV" erstellt Objekte aus CSV-Dateien, die vom Cmdlet "Export-CSV" generiert werden.
Sie können mit den Parametern des Cmdlets "Import-CSV" die Spaltenüberschriftenzeile angeben, die die Eigenschaftennamen der resultierenden Objekte bestimmt, das Elementtrennzeichen angeben oder festlegen, dass Import-CSV das Listentrennzeichen für die aktuelle Kultur als Elementtrennzeichen verwendet.
Die von Import-CSV erstellten Objekte sind CSV-Versionen der ursprünglichen Objekte. Die Eigenschaftenwerte der CSV-Objekte sind Zeichenfolgenversionen der Eigenschaftenwerte der ursprünglichen Objekte. Die CSV-Versionen der Objekte verfügen über keine Methoden.
Sie können auch die Cmdlets "ConvertTo-CSV" und "ConvertFrom-CSV" verwenden, um Objekte in CSV-Zeichenfolgen zu konvertieren (bzw. um CSV-Zeichenfolgen in Objekte zu konvertieren). Diese Cmdlets entsprechen den Cmdlets "Export-CSV" und "Import-CSV", mit dem Unterschied, dass sie die CSV-Zeichenfolgen nicht in einer Datei speichern.
Parameter
-Delimiter <char>
Gibt das Trennzeichen zum Trennen der Eigenschaftenwerte in der CSV-Datei an. Der Standardwert ist ein Komma (,). Geben Sie ein Zeichen ein, z. B. einen Doppelpunkt (:). Um ein Semikolon (;) anzugeben, schließen Sie es in Anführungszeichen ein.
Wenn Sie ein anderes Zeichen als das tatsächliche Zeichenfolgentrennzeichen in der Datei angeben, können mit Import-CSV keine Objekte aus den CSV-Zeichenfolgen erstellt werden. Stattdessen werden die Zeichenfolgen zurückgegeben.
Erforderlich? |
false |
Position? |
2 |
Standardwert |
, |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Header <string[]>
Gibt eine alternative Spaltenüberschriftenzeile für die importierte Datei an. Die Spaltenüberschrift bestimmt die Namen der Eigenschaften des Objekts, das von Import-CSV erstellt wird.
Geben Sie eine durch Trennzeichen getrennte Liste der Spaltenüberschriften ein. Schließen Sie jedes Element in (einzelne oder doppelte) Anführungszeichen ein. Schließen Sie die Headerzeichenfolge nicht in Anführungszeichen ein. Wenn Sie weniger Spaltenüberschriften eingeben als Spalten vorhanden sind, verfügen die verbleibenden Spalten über keine Überschrift. Wenn Sie mehr Überschriften eingeben als Spalten vorhanden sind, werden die zusätzlichen Überschriften ignoriert.
Wenn Sie den Header-Parameter verwenden, löschen Sie die ursprüngliche Überschriftenzeile aus der CSV-Datei. Andernfalls erstellt Import-CSV ein zusätzliches Objekt aus den Elementen in der Überschriftenzeile.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Path <string[]>
Gibt den Pfad der zu importierenden CSV-Datei an. Sie können einen Pfad auch über die Pipeline an Import-CSV übergeben.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
keine |
Pipelineeingaben akzeptieren? |
true (ByValue, ByPropertyName) |
Platzhalterzeichen akzeptieren? |
false |
-UseCulture
Verwendet das Listentrennzeichen für die aktuelle Kultur als Elementtrennzeichen. Der Standardwert ist ein Komma (,).
Um das Listentrennzeichen für eine Kultur zu suchen, verwenden Sie den folgenden Befehl: (Get-Culture).TextInfo.ListSeparator. Wenn Sie ein anderes Zeichen als das in den CSV-Zeichenfolgen verwendete Trennzeichen angeben, können mit ConvertFrom-CSV keine Objekte aus den CSV-Zeichenfolgen erstellt werden. Stattdessen werden die Zeichenfolgen zurückgegeben.
Erforderlich? |
true |
Position? |
named |
Standardwert |
Comma |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
<CommonParameters>
Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
System.String Sie können eine Zeichenfolge mit einem Pfad über die Pipeline an Import-CSV übergeben. |
Ausgaben |
Objekt. Import-CSV gibt die durch den Inhalt der CSV-Datei beschriebenen Objekte zurück. |
Hinweise
Da die importierten Objekte CSV-Versionen des Objekttyps sind, werden sie von den Windows PowerShell-Typformatierungseinträgen, die keine CSV-Versionen des Objekttyps formatieren, nicht erkannt und formatiert.
Jedes Objekt in der CSV-Datei wird durch eine durch Trennzeichen getrennte Liste der Eigenschaftenwerte des Objekts dargestellt. Die Eigenschaftenwerte werden in Zeichenfolgen konvertiert (mit der ToString()-Methode des Objekts). Deshalb werden sie im Allgemeinen durch den Namen des Eigenschaftenwerts dargestellt. Export-CSV exportiert nicht die Methoden des Objekts.
Beispiel 1
C:\PS>get-process | export-csv processes.csv C:\PS> $p = import-CSV processes.csv C:\PS> $p | get-member TypeName: CSV:System.Diagnostics.Process Name MemberType Definition ---- ---------- ---------- Equals Method System.Boolean Equals(Object obj) GetHashCode Method System.Int32 GetHashCode() GetType Method System.Type GetType() ToString Method System.String ToString() BasePriority NoteProperty System.String BasePriority=8 Company NoteProperty System.String Company=Microsoft Corporation ... C:\PS> $p | out-gridview Beschreibung ----------- In diesem Beispiel wird gezeigt, wie eine CSV-Datei von Microsoft .NET Framework-Objekten exportiert und dann importiert wird. Im ersten Befehl wird der Prozess auf dem Computer mit dem Cmdlet "Get-Process" abgerufen. Die Prozessobjekte werden mithilfe eines Pipelineoperators (|) an das Cmdlet "Export-CSV" gesendet, das die Prozessobjekte in die Datei "Processes.csv" im aktuellen Verzeichnis exportiert. Im zweiten Befehl werden die Prozesse in der Datei "Import-CSV" mit dem Cmdlet "Import-CSV" importiert. Dann werden die resultierenden Prozessobjekte in der Variablen "$p" gespeichert. Im dritten Befehl werden die importierten Objekte mit einem Pipelineoperator über die Pipeline an die Get-Member-Cmdlets übergeben. Das Ergebnis zeigt, dass es sich um CSV:System.Diagnostic.Process-Objekte und nicht um die von Get-Process zurückgegebenen System.Diagnostic.Process-Objekte handelt. Da in den Formatierungsdateien für die CSV-Version der Prozessobjekte kein Eintragstyp vorhanden ist, werden diese Objekte nicht auf die gleiche Weise wie die Standardprozessobjekte formatiert. Um die Objekte anzuzeigen, verwenden Sie die Formatierungs-Cmdlets, z. B. Format-Table und Format-List, oder übergeben Sie die Objekte über die Pipeline an Out-GridView.
Beispiel 2
C:\PS>get-process | export-csv processes.csv -Delimiter : C:\PS> $p = import-csv processes.csv -Delimiter : Beschreibung ----------- In diesem Beispiel wird gezeigt, wie der Delimiter-Parameter von Import-CSV verwendet wird. In diesem Beispiel werden die Prozesse in eine Datei exportiert, die einen Doppelpunkt (:) als Trennzeichen verwendet. Beim Importieren gibt die Import-CSV-Datei das in der Datei verwendete Trennzeichen mit dem Delimiter-Parameter an.
Beispiel 3
C:\PS>$p = import-csv processes.csv -UseCulture C:\PS> (get-culture).textinfo.listseparator , Beschreibung ----------- In diesem Beispiel wird gezeigt, wie der UseCulture-Parameter von Import-CSV verwendet wird. Im ersten Befehl werden die Objekte in der Datei "Processes.csv" in die Variable "$p" importiert. Mit dem UseCulture-Parameter wird festgelegt, dass Import-CSV das für die aktuelle Kultur definierte Listentrennzeichen verwendet. Im zweiten Befehl wird das Listentrennzeichen für die aktuelle Kultur angezeigt. Die aktuelle Kultur wird mit dem Cmdlet "Get-Culture" abgerufen. Die TextInfo-Eigenschaft der aktuellen Kultur und die ListSeparator-Eigenschaft des Objekts in TextInfo werden mit der DOT-Methode (.) abgerufen. In diesem Beispiel gibt der Befehl ein Komma zurück.
Beispiel 4
C:\PS>start-job -scriptblock { get-process } | export-csv jobs.csv C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged" # Delete header from file C:\PS> $a = (get-content jobs.csv) C:\PS> $a = $a[0], $a[2..($a.count - 1)] C:\PS> $a > jobs.csv C:\PS> $j = import-csv jobs.csv -header $header C:\PS> $j MoreData : True StatusMessage : Location : localhost Command : get-process State : Running Finished : System.Threading.ManualResetEvent InstanceId : 135bdd25-40d6-4a20-bd68-05282a59abd6 SessionId : 1 Name : Job1 ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job] Output : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject] Error : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord] Progress : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord] Verbose : System.Management.Automation.PSDataCollection`1[System.String] Debug : System.Management.Automation.PSDataCollection`1[System.String] Warning : System.Management.Automation.PSDataCollection`1[System.String] StateChanged : Beschreibung ----------- In diesem Beispiel wird gezeigt, wie die Namen von Eigenschaften im resultierenden importierten Objekt mit dem Header-Parameter von Import-CSV geändert werden. Im ersten Befehl wird ein Hintergrundauftrag, der auf dem lokalen Computer den Befehl "Get-Process" ausführt, mit dem Cmdlet "Start-Job" gestartet. Das resultierende Auftragsobjekt wird mit einem Pipelineoperator (|) an das Cmdlet "Export-CSV" gesendet, das das Auftragsobjekt in das CSV-Format konvertiert. Der resultierende CSV-Inhalt wird mit einem Zuweisungsoperator (=) in der Datei "Jobs.csv" gespeichert. Mit dem zweiten Befehl wird eine Überschrift in der Variablen "$header" gespeichert. Im Gegensatz zur Standardüberschrift wird für diese Überschrift "MoreData" statt "HasMoreData" und "Status" statt "JobStateInfo" verwendet. Mit den nächsten drei Befehlen wird die ursprüngliche Überschrift (die zweite Zeile) aus der Datei "Jobs.csv" gelöscht. Im sechsten Befehl wird das Cmdlet "Import-CSV" verwendet, um die Datei "Jobs.csv" zu importieren und die CSV-Zeichenfolgen in eine CSV-Version des Auftragsobjekts zu konvertieren. Die alternative Überschrift wird mithilfe des Header-Parameters gesendet. Die Ergebnisse werden in der Variablen "$j" gespeichert. Mit dem siebten Befehl wird das Objekt in der Variablen "$j" angezeigt. Das resultierende Objekt verfügt über die MoreData-Eigenschaft und die State-Eigenschaft, wie in der Befehlsausgabe angezeigt.
Beispiel 5
C:\PS>".\processes.csv" | import-csv Beschreibung ----------- Mit diesem Befehl werden die Objekte aus der Datei "Processes.csv" importiert.
Siehe auch