Freigeben über


ConvertFrom-Csv

Konvertiert Objekteigenschaften im CSV-Format (Character Separated Value) in CSV-Versionen der ursprünglichen Objekte.

Syntax

ConvertFrom-Csv
                [[-Delimiter] <Char>]
                [-InputObject] <PSObject[]>
                [-Header <String[]>]
                [<CommonParameters>]
ConvertFrom-Csv
                -UseCulture
                [-InputObject] <PSObject[]>
                [-Header <String[]>]
                [<CommonParameters>]

Beschreibung

Das ConvertFrom-Csv Cmdlet konvertiert daten mit zeichentrennten Werten (CSV) für jede Zeile mit CSV-Daten in PSObject-Typobjekte . Die neuen Objekte werden in die Pipeline geschrieben, in der Reihenfolge, in der sie aus den CSV-Daten gelesen werden. Die Werte in der Spaltenkopfzeile der CSV werden zu den Namen der Eigenschaften, die jedem neuen PSObject hinzugefügt wurden.

Die objekte, die erstellt werden, ConvertFrom-Csv sind PSObject-Typobjekt für jede Zeile in der CSV-Datei. Die Eigenschaftswerte der CSV-Objekte sind Zeichenfolgenversionen der Eigenschaftswerte der ursprünglichen Objekte. Die CSV-Versionen der Objekte haben keine Methoden.

Sie können auch die Export-Csv Und-Cmdlets Import-Csv verwenden, um Objekte in CSV-Zeichenfolgen in einer Datei und zurück zu konvertieren. Diese Cmdlets sind identisch mit den ConvertTo-Csv Cmdlets und ConvertFrom-Csv Cmdlets, mit der Ausnahme, dass sie die CSV-Zeichenfolgen in einer Datei speichern.

Der PSObject-Typ Standard die Reihenfolge der Eigenschaften in der Spaltenüberschriftreihenfolge. Dies bedeutet, dass Sie dieselbe Spaltenreihenfolge erhalten, wenn Sie die Objekte wieder in das CSV-Format konvertieren.

Beispiele

Beispiel 1: Konvertieren von Prozessen auf dem lokalen Computer in das CSV-Format

In diesem Beispiel wird gezeigt, wie die Prozesse auf dem lokalen Computer in das CSV-Format konvertiert und dann im Objektformular wiederhergestellt werden.

$P = Get-Process | ConvertTo-Csv
$P | ConvertFrom-Csv

Das Get-Process Cmdlet sendet die Prozesse nach unten an .ConvertTo-Csv Das ConvertTo-Csv Cmdlet konvertiert die Prozessobjekte in eine Reihe von CSV-Zeichenfolgen. Das ConvertFrom-Csv Cmdlet konvertiert die CSV-Zeichenfolgen in CSV-Versionen der ursprünglichen Prozessobjekte. Die CSV-Zeichenfolgen werden in der $P Variablen gespeichert.

Beispiel 2: Konvertieren eines Datenobjekts in das CSV-Format und dann in das CSV-Objektformat

In diesem Beispiel wird gezeigt, wie ein Datenobjekt in das CSV-Format und dann in das CSV-Objektformat konvertiert wird.

$Date = Get-Date | ConvertTo-Csv -Delimiter ';'
ConvertFrom-Csv -InputObject $Date -Delimiter ';'

Der erste Befehl verwendetGet-Date, um das aktuelle Datum und die aktuelle Uhrzeit der Pipeline nach unten zu senden.ConvertTo-Csv Das ConvertTo-Csv Cmdlet konvertiert das Datumsobjekt in eine Reihe von CSV-Zeichenfolgen. Der Parameter "Delimiter " wird verwendet, um ein Semikolontrennzeichen anzugeben. Die Zeichenfolgen werden in der $Date Variablen gespeichert.

Beispiel 3: Verwenden des Headerparameters zum Ändern der Namen von Eigenschaften

In diesem Beispiel wird gezeigt, wie Sie den Header-ParameterConvertFrom-Csv verwenden, um die Namen der Eigenschaften im resultierenden importierten Objekt zu ändern.

$J = Start-Job -ScriptBlock { Get-Process } | ConvertTo-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 $J
$J = $J[1..($J.count - 1)]
$J | ConvertFrom-Csv -Header $Header

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 die Pipeline ConvertTo-Csv 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 $J Variable enthält die CSV-Zeichenfolge und wird verwendet, um den Standardheader zu entfernen. Das ConvertFrom-Csv Cmdlet konvertiert die CSV-Zeichenfolge in ein PSCustomObject und verwendet den Header-Parameter , um die $Header Variable anzuwenden.

Beispiel 4: Konvertieren von CSV-Zeichenfolgen von Dienstobjekten

In diesem Beispiel wird gezeigt, wie Sie das ConvertFrom-Csv Cmdlet mit dem Parameter UseCulture verwenden.

(Get-Culture).TextInfo.ListSeparator
$Services = (Get-Service | ConvertTo-Csv)
ConvertFrom-Csv -InputObject $Services -UseCulture

Das Get-Culture Cmdlet verwendet die geschachtelten Eigenschaften TextInfo und ListSeparator , um das Standardlistentrennzeichen der aktuellen Kultur abzurufen. Das Get-Service Cmdlet sendet Dienstobjekte an die Pipeline nach unten.ConvertTo-Csv Die ConvertTo-Csv Dienstobjekte werden in eine Reihe von CSV-Zeichenfolgen konvertiert. Die CSV-Zeichenfolgen werden in der $Services Variablen gespeichert. Das ConvertFrom-Csv Cmdlet verwendet den InputObject-Parameter und konvertiert die CSV-Zeichenfolgen aus der $Services Variablen. Der UseCulture-Parameter verwendet das Standardlistentrennzeichen der aktuellen Kultur.

Stellen Sie beim Verwenden des UseCulture-Parameters sicher, dass das Standardlistentrennzeichen der aktuellen Kultur dem in den CSV-Zeichenfolgen verwendeten Trennzeichen entspricht. ConvertFrom-Csv Andernfalls können keine Objekte aus den CSV-Zeichenfolgen generiert werden.

Parameter

-Delimiter

Gibt das Trennzeichen an, das die Eigenschaftswerte in den CSV-Zeichenfolgen trennt. 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 ein anderes Zeichen als das tatsächliche Zeichenfolgentrennzeichen in der Datei angeben, ConvertFrom-Csv können die Objekte nicht aus den CSV-Zeichenfolgen erstellt und die CSV-Zeichenfolgen zurückgegeben werden.

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Header

Gibt eine alternative Spaltenkopfzeile für die importierte Zeichenfolge an. Die Spaltenüberschrift bestimmt die Eigenschaftennamen der objekte, die von ConvertFrom-Csv.

Geben Sie Spaltenüberschriften als durch Zeichen getrennte Liste ein. Schließen Sie die Kopfzeilenzeichenfolge nicht in Anführungszeichen ein. 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.

Wenn Sie den Header-Parameter verwenden, lassen Sie die Spaltenüberschriftzeichenfolge aus den CSV-Zeichenfolgen aus. Andernfalls erstellt dieses Cmdlet ein zusätzliches Objekt aus den Elementen in der Kopfzeile.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Gibt die CSV-Zeichenfolgen an, die in Objekte konvertiert werden sollen. Geben Sie eine Variable ein, die die CSV-Zeichenfolgen enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die CSV-Zeichenfolgen abgerufen werden. Sie können die CSV-Zeichenfolgen auch an ConvertFrom-Csv.

Type:PSObject[]
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

String

Sie können CSV-Zeichenfolgen an dieses Cmdlet weiterleiten.

Ausgaben

PSObject

Dieses Cmdlet gibt die von den Eigenschaften in den CSV-Zeichenfolgen beschriebenen Objekte zurück.

Hinweise

Im CSV-Format 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. Es gibt keine Möglichkeit, die Methoden des Objekts zu exportieren.