Import-Csv
Erstellt tabellenähnliche benutzerdefinierte Objekte aus den Elementen in einer CSV-Datei (Character-Separated Value).
Syntax
Import-Csv
[[-Delimiter] <Char>]
[-Path] <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
[[-Delimiter] <Char>]
-LiteralPath <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
[-Path] <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Import-Csv
-LiteralPath <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Beschreibung
Das Import-Csv
Cmdlet erstellt tabellenähnliche benutzerdefinierte Objekte aus den Elementen in CSV-Dateien. Jede Spalte in der CSV-Datei wird zu einer Eigenschaft des benutzerdefinierten Objekts, und die Elemente in den Zeilen werden zu Eigenschaftswerten. Import-Csv
funktioniert für jede CSV-Datei, einschließlich Dateien, die vom Export-Csv
Cmdlet generiert werden.
Sie können die Parameter des Import-Csv
Cmdlets verwenden, um die Spaltenkopfzeile und das Elementtrennzeichen anzugeben, oder direkt Import-Csv
, um das Listentrennzeichen für die aktuelle Kultur als Elementtrennzeichen zu verwenden.
Sie können auch die ConvertTo-Csv
Und-Cmdlets ConvertFrom-Csv
verwenden, um Objekte in CSV-Zeichenfolgen (und zurück) zu konvertieren. Diese Cmdlets sind identisch mit den Export-CSV
Cmdlets und Import-Csv
Cmdlets, mit der Ausnahme, dass sie nicht mit Dateien umgehen.
Wenn ein Zeileneintrag in einer CSV-Datei einen leeren oder NULL-Wert enthält, fügt PowerShell einen Standardnamen für überschriftenzeilen ein und zeigt eine Warnmeldung an.
Ab PowerShell 6.0 Import-Csv
unterstützt jetzt das erweiterte W3C-Protokolldateiformat.
Beispiele
Beispiel 1: Importieren von Prozessobjekten
In diesem Beispiel wird gezeigt, wie Sie eine CSV-Datei mit Prozessobjekten exportieren und dann importieren.
Get-Process | Export-Csv -Path .\Processes.csv
$P = Import-Csv -Path .\Processes.csv
$P | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
BasePriority NoteProperty string BasePriority=8
Company NoteProperty string Company=Microsoft Corporation
...
$P | Format-Table
Name SI Handles VM WS PM NPM Path
---- -- ------- -- -- -- --- ----
ApplicationFrameHost 4 407 2199293489152 15884288 15151104 23792 C:\WINDOWS\system32\ApplicationFrameHost.exe
...
wininit 0 157 2199112204288 4591616 1630208 10376
winlogon 4 233 2199125549056 7659520 2826240 10992 C:\WINDOWS\System32\WinLogon.exe
WinStore.App 4 846 873435136 33652736 26607616 55432 C:\Program Files\WindowsApps\Microsoft.WindowsStore_11712.1001.13.0_x64__8weky...
WmiPrvSE 0 201 2199100219392 8830976 3297280 10632 C:\WINDOWS\system32\wbem\wmiprvse.exe
WmiPrvSE 0 407 2199157727232 18509824 12922880 16624 C:\WINDOWS\system32\wbem\wmiprvse.exe
WUDFHost 0 834 2199310204928 51945472 87441408 24984 C:\Windows\System32\WUDFHost.exe
Das Get-Process
Cmdlet sendet Prozessobjekte an die Export-Csv
Pipeline. Das Export-Csv
Cmdlet konvertiert die Prozessobjekte in CSV-Zeichenfolgen und speichert die Zeichenfolgen in der datei Processes.csv. Das Import-Csv
Cmdlet importiert die CSV-Zeichenfolgen aus der Processes.csv-Datei.
Die Zeichenfolgen werden in der $P
Variablen gespeichert. Die $P
Variable wird an das Get-Member
Cmdlet gesendet, das die Eigenschaften der importierten CSV-Zeichenfolgen anzeigt. Die $P
Variable wird an das Format-Table
Cmdlet gesendet und zeigt die Objekte an.
Beispiel 2: Angeben des Trennzeichens
In diesem Beispiel wird gezeigt, wie sie den Parameter "Delimiter " des Import-Csv
Cmdlets verwenden.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Das Get-Process
Cmdlet sendet Prozessobjekte nach unten an Export-Csv
. Das Export-Csv
Cmdlet konvertiert die Prozessobjekte in CSV-Zeichenfolgen und speichert die Zeichenfolgen in der datei Processes.csv.
Der Parameter "Delimiter " wird verwendet, um ein Doppelpunkttrennzeichen anzugeben. Das Import-Csv
Cmdlet importiert die CSV-Zeichenfolgen aus der Processes.csv-Datei. Die Zeichenfolgen werden in der $P
Variablen gespeichert. Zur $P
Variablen wird die Pipeline an das Format-Table
Cmdlet gesendet.
Beispiel 3: Angeben der aktuellen Kultur für das Trennzeichen
In diesem Beispiel wird gezeigt, wie Sie das Import-Csv
Cmdlet mit dem Parameter UseCulture verwenden.
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture
Das Get-Culture
Cmdlet verwendet die geschachtelten Eigenschaften TextInfo und ListSeparator , um das Standardlistentrennzeichen der aktuellen Kultur abzurufen. Das Get-Process
Cmdlet sendet Prozessobjekte nach unten an Export-Csv
. Das Export-Csv
Cmdlet konvertiert die Prozessobjekte in CSV-Zeichenfolgen und speichert die Zeichenfolgen in der datei Processes.csv. Der UseCulture-Parameter verwendet das Standardlistentrennzeichen der aktuellen Kultur. Das Import-Csv
Cmdlet importiert die CSV-Zeichenfolgen aus der Processes.csv-Datei.
Beispiel 4: Ändern von Eigenschaftsnamen in einem importierten Objekt
In diesem Beispiel wird gezeigt, wie Sie den Header-ParameterImport-Csv
verwenden, um die Namen der Eigenschaften im resultierenden importierten Objekt zu ändern.
Start-Job -ScriptBlock { Get-Process } | Export-Csv -Path .\Jobs.csv -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command', 'StateInfo', 'Finished',
'InstanceId', 'Id', 'Name', 'ChildJobs', 'BeginTime', 'EndTime', 'JobType', 'Output',
'Error', 'Progress', 'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from file
$A = Get-Content -Path .\Jobs.csv
$A = $A[1..($A.Count - 1)]
$A | Out-File -FilePath .\Jobs.csv
$J = Import-Csv -Path .\Jobs.csv -Header $Header
$J
State : Running
MoreData : True
StatusMessage :
Location : localhost
Command : Get-Process
StateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : a259eb63-6824-4b97-a033-305108ae1c2e
Id : 1
Name : Job1
ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime : 12/20/2018 18:59:57
EndTime :
JobType : BackgroundJob
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.Management.Automation.VerboseRecord]
Debug : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]
Das Start-Job
Cmdlet startet einen Hintergrundauftrag, der ausgeführt wird Get-Process
. Ein Auftragsobjekt wird an das Export-Csv
Cmdlet gesendet und in eine CSV-Zeichenfolge konvertiert. Der Parameter NoTypeInformation entfernt den Typinformationsheader aus der CSV-Ausgabe und ist in PowerShell v6 und höher optional. Die $Header
Variable enthält einen benutzerdefinierten Header, der die folgenden Standardwerte ersetzt: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime und PSJobTypeName. Die $A
Variable verwendet das Get-Content
Cmdlet, um die CSV-Zeichenfolge aus der datei Jobs.csv abzurufen. Die $A
Variable wird verwendet, um den Standardheader aus der Datei zu entfernen. Das Out-File
Cmdlet speichert die neue Version der Jobs.csv Datei in der $A
Variablen. Das Import-Csv
Cmdlet importiert die Jobs.csv-Datei und verwendet den Header-Parameter , um die $Header
Variable anzuwenden. Die $J
Variable enthält das importierte PSCustomObject und zeigt das Objekt in der PowerShell-Konsole an.
Beispiel 5: Erstellen eines benutzerdefinierten Objekts mithilfe einer CSV-Datei
In diesem Beispiel wird gezeigt, wie Sie ein benutzerdefiniertes Objekt in PowerShell mithilfe einer CSV-Datei erstellen.
Get-Content -Path .\Links.csv
113207,about_Aliases
113208,about_Arithmetic_Operators
113209,about_Arrays
113210,about_Assignment_Operators
113212,about_Automatic_Variables
113213,about_Break
113214,about_Command_Precedence
113215,about_Command_Syntax
144309,about_Comment_Based_Help
113216,about_CommonParameters
113217,about_Comparison_Operators
113218,about_Continue
113219,about_Core_Commands
113220,about_Data_Section
$A = Import-Csv -Path .\Links.csv -Header 'LinkID', 'TopicTitle'
$A | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
LinkID NoteProperty string LinkID=113207
TopicTitle NoteProperty string TopicTitle=about_Aliases
$A | Where-Object -Property TopicTitle -Like '*alias*'
LinkID TopicTitle
------ ----------
113207 about_Aliases
Verwenden Sie die in der Get-Content
Ausgabe angezeigten Werte, um ihre Links.csv Datei zu erstellen.
Das Get-Content
Cmdlet zeigt die Links.csv Datei an. Das Import-Csv
Cmdlet importiert die Links.csv Datei. Der Header-Parameter gibt die Eigenschaftennamen LinkId und TopicTitle an. Die Objekte werden in der $A
Variablen gespeichert. Das Get-Member
Cmdlet zeigt die Eigenschaftennamen aus dem Header-Parameter an. Das Where-Object
Cmdlet wählt Objekte mit der TopicTitle-Eigenschaft aus, die Alias enthält.
Beispiel 6: Importieren einer CSV,die einen Wert fehlt
In diesem Beispiel wird gezeigt, wie das Import-Csv
Cmdlet in PowerShell reagiert, wenn die Kopfzeile in einer CSV-Datei einen Null- oder leeren Wert enthält. Import-Csv
ersetzt einen Standardnamen für die fehlende Kopfzeile, die zum Eigenschaftennamen des zurückgegebenen Objekts Import-Csv
wird.
Get-Content -Path .\Projects.csv
ProjectID,ProjectName,,Completed
13,Inventory,Redmond,True
440,,FarEast,True
469,Marketing,Europe,False
Import-Csv -Path .\Projects.csv
WARNING: One or more headers were not specified. Default names starting with "H" have been used in
place of any missing headers.
ProjectID ProjectName H1 Completed
--------- ----------- -- ---------
13 Inventory Redmond True
440 FarEast True
469 Marketing Europe False
(Import-Csv -Path .\Projects.csv).H1
WARNING: One or more headers were not specified. Default names starting with "H" have been used in
place of any missing headers.
Redmond
FarEast
Europe
Verwenden Sie die in der Ausgabe des Beispiels Get-Content
angezeigten Werte, um ihre Projects.csv Datei zu erstellen.
Das Get-Content
Cmdlet zeigt die Projects.csv Datei an. Die Kopfzeile fehlt ein Wert zwischen ProjectName und Completed. Das Import-Csv
Cmdlet importiert die Projects.csv-Datei und zeigt eine Warnmeldung an, da H1 ein Standardheadername ist. Der (Import-Csv -Path .\Projects.csv).H1
Befehl ruft die H1-Eigenschaftswerte ab und zeigt eine Warnung an.
Parameter
-Delimiter
Gibt das Trennzeichen für die Eigenschaftswerte 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 einfache Anführungszeichen ein. Wenn Sie Escapezeichen wie Tabstoppzeichen (`t
) angeben möchten, schließen Sie sie in doppelte Anführungszeichen ein.
Wenn Sie ein anderes Zeichen als das tatsächliche Zeichenfolgentrennzeichen in der Datei angeben, Import-Csv
können die Objekte nicht aus den CSV-Zeichenfolgen erstellt werden und geben die CSV-Zeichenfolgen zurück.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Gibt die Codierung für die importierte CSV-Datei an. Der Standardwert ist utf8NoBOM
.
Die zulässigen Werte für diesen Parameter sind wie folgt:
ascii
: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit).ansi
: Verwendet die Codierung für die ANSI-Codeseite der aktuellen Kultur. Diese Option wurde in PowerShell 7.4 hinzugefügt.bigendianunicode
: Codiert im UTF-16-Format mit der Big-End-Byte-Reihenfolge.bigendianutf32
: Codiert im UTF-32-Format mithilfe der Big-End-Byte-Reihenfolge.oem
: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.unicode
: Codiert im UTF-16-Format mithilfe der Little-Endian-Bytereihenfolge.utf7
: Codiert im UTF-7-Format.utf8
: Codiert im UTF-8-Format.utf8BOM
: Codiert im UTF-8-Format mit Bytereihenfolgezeichen (BOM)utf8NoBOM
: Codiert im UTF-8-Format ohne Byte Order Mark (BOM)utf32
: Codiert im UTF-32-Format.
Ab PowerShell 6.2 ermöglicht der Encoding-Parameter auch numerische IDs registrierter Codeseiten (z -Encoding 1251
. B. ) oder Zeichenfolgennamen registrierter Codeseiten (z -Encoding "windows-1251"
. B. ). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.
Ab PowerShell 7.4 können Sie den Ansi
Wert für den Codierungsparameter verwenden, um die numerische ID für die ANSI-Codeseite der aktuellen Kultur zu übergeben, ohne sie manuell angeben zu müssen.
Hinweis
UTF-7* wird nicht mehr empfohlen, zu verwenden. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie für den Codierungsparameter angebenutf7
.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Header
Gibt eine alternative Spaltenkopfzeile für die importierte Datei an. Die Spaltenüberschrift bestimmt die Eigenschaftennamen der objekte, die von Import-Csv
.
Geben Sie Spaltenüberschriften als durch Zeichen getrennte Liste ein. Die Kopfzeichenfolge darf nicht in Anführungszeichen eingeschlossen werden. Schließen Sie jede Spaltenüberschrift in einfache Anführungszeichen ein.
Wenn Sie weniger Spaltenüberschriften eingeben, als Datenspalten vorhanden sind, werden die datenspalten wieder Standard nicht Karte. Wenn Sie mehr Spaltenüberschriften eingeben, als Datenspalten vorhanden sind, werden die zusätzlichen Spaltenüberschriften mit leeren Datenspalten erstellt.
Löschen Sie bei Verwendung des Header-Parameters die ursprüngliche Kopfzeile aus der CSV-Datei. Import-Csv
Andernfalls wird ein zusätzliches Objekt aus den Elementen in der Kopfzeile erstellt.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Gibt den Pfad zu der zu importierenden CSV-Datei an. Im Gegensatz zu Path wird der Wert des LiteralPath-Parameters genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Gibt den Pfad zu der zu importierenden CSV-Datei an.
Sie können auch einen Pfad an Import-Csv
.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
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 finden: (Get-Culture).TextInfo.ListSeparator
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können eine Zeichenfolge weiterleiten, die einen Pfad zu diesem Cmdlet enthält.
Ausgaben
Dieses Cmdlet gibt die durch den Inhalt in der CSV-Datei beschriebenen Objekte zurück.
Hinweise
PowerShell enthält die folgenden Aliase für Import-Csv
:
- Alle Plattformen:
ipcsv
Da es sich bei den importierten Objekten um CSV-Versionen des Objekttyps handelt, werden sie von den PowerShell-Typformatierungseinträgen, die die Nicht-CSV-Versionen des Objekttyps formatieren, nicht erkannt und formatiert.
Das Ergebnis eines Import-Csv
Befehls ist eine Auflistung von Zeichenfolgen, die ein tabellenähnliches benutzerdefiniertes Objekt bilden. Jede Zeile ist eine separate Zeichenfolge, sodass Sie die Count-Eigenschaft des Objekts verwenden können, um die Tabellenzeilen zu zählen. Die Spalten sind die Eigenschaften des Objekts, und die Elemente in den Zeilen sind die Eigenschaftswerte.
Die Spaltenkopfzeile bestimmt die Anzahl der Spalten und die Spaltennamen. Die Spaltennamen dienen auch als Namen der Objekteigenschaften . Die erste Zeile wird als Spaltenüberschriften interpretiert, es sei denn, Sie verwenden den Header-Parameter , um Spaltenüberschriften anzugeben. Weist eine beliebige Zeile mehr Werte als die Kopfzeile auf, werden die zusätzlichen Werte ignoriert.
Wenn die Spaltenüberschriftzeile einen Wert fehlt oder einen Null- oder leeren Wert enthält, Import-Csv
wird H gefolgt von einer Zahl für die fehlende Spaltenüberschrift und den Eigenschaftennamen verwendet.
In der CSV-Datei wird jedes Objekt durch eine durch Zeichen getrennte Liste der Eigenschaftswerte des Objekts dargestellt. Die Eigenschaftswerte werden mithilfe der ToString() -Methode des Objekts in Zeichenfolgen konvertiert, sodass sie durch den Namen des Eigenschaftswerts dargestellt werden. Export-Csv
exportiert die Methoden des Objekts nicht.
Import-Csv
unterstützt auch das Erweiterte W3C-Protokollformat. Zeilen, die beginnen, #
werden als Kommentare behandelt und ignoriert, es sei denn, der Kommentar beginnt mit #Fields:
und enthält eine durch Trennzeichen getrennte Liste von Spaltennamen. In diesem Fall verwendet das Cmdlet diese Spaltennamen. Dies ist das Standardformat für Windows IIS und andere Webserverprotokolle. Weitere Informationen finden Sie unter Extended Log File Format.