Verwalten von CSV-Dateien mithilfe von Import/Export-CSV in Powershell

In der PowerShell-Serie befassen wir uns mit der Arbeit mit Dateien in PowerShell. Die ersten Dateitypen, die wir behandeln, sind die CSV-Dateitypen (Comma Separated Values). Wir werden uns zwei wichtige Cmdlets import-csv/export-csv ansehen, die bei der Arbeit mit CSV häufig verwendet werden.

Wir beginnen mit der CSV-Dateierweiterung, da diese die einfachste ist. Wir verwenden das vorherige Beispiel, in dem wir die aktuell laufenden Prozesse in einer Datei gespeichert haben:

#Defining file for export$exportedFile = 'C:\temp\exportedProcesses.csv'#Exporting as CSV - basicGet-Process | Export-Csv $exportedFile#Opening the filepsedit $exportedFile

Standardmäßig schreibt Export-Csv eine kommagetrennte Datei mit ASCII-Kodierung und überschreibt eine Datei mit demselben Namen vollständig.
Export-Csv kann verwendet werden, um Zeilen zu einer bestehenden Datei hinzuzufügen, indem der Parameter Append verwendet wird. Wenn der Append-Parameter verwendet wird, muss das Eingabeobjekt jedes der im CSV-Header aufgelisteten Felder haben, oder es wird ein Fehler ausgegeben, es sei denn, der Force-Parameter wird verwendet.
Nach dem Ausführen dieses einfachen Beispiels haben Sie die geöffnete CSV-Datei vor sich, die aus allen Prozessen und jedem Wert besteht, getrennt durch Kommas. Und das ist es, wofür CSV eigentlich steht: comma-separated values. Der Vorteil bei der Arbeit mit CSV-Dateien ist, dass Sie tabellenähnliche benutzerdefinierte Objekte zurückerhalten, die sich leicht filtern lassen. Vor allem für einfache Datenobjekte ist dieser Dateityp sinnvoll.
Export-Csv kann mit dem Parameter NoTypeInformation angewiesen werden, diesen Header auszuschließen:

Get-Process | Export-Csv processes.csv -NoTypeInformation 

Der Import ist sehr einfach.

#Importing CSV file$data = Import-Csv $exportedFile#Showing content$data | Out-GridView

Comma-Separated Values (CSV) Dateien sind reiner Text. Anwendungen wie Microsoft Excel können mit CSV-Dateien arbeiten, ohne das Dateiformat zu ändern, obwohl die erweiterten Funktionen von Excel nicht in einer CSV-Datei gespeichert werden können.
Standardmäßig erwartet Import-Csv, dass die Eingabe eine Kopfzeile hat, kommagetrennt ist und die ASCII-Dateikodierung verwendet. Wenn einer dieser Punkte anders ist, können die Befehlsparameter verwendet werden. Beispielsweise kann ein Tabulator als Trennzeichen festgelegt werden.

Import-Csv TabDelimitedFile.tsv -Delimiter `t 

Ein Häkchen gefolgt von t (`t) wird verwendet, um das Tabulatorzeichen in PowerShell darzustellen.

Daten, die mit Import-Csv importiert werden, werden immer als String formatiert. Wenn mit Import-Csv eine Datei gelesen wird, die den folgenden Text enthält, wird jede der Zahlen als Zeichenkette behandelt.

#Showing its type$data | Get-Member # TypeName: CSV:System.Diagnostics.Process$data.GetType() # PSCustomObject$data.GetType() # System.Array

Es ist hier interessant zu sehen, welcher Typ nach dem Import der CSV-Datei abgerufen wird. Das Cmdlet „Get-Member“ auf dem $data-Objekt selbst zeigt, dass es sich um eine CSV-Datei handelt, und die exportierten Objekte sind vom Typ System.Diagnostics.Process. Nach einem dedizierten Blick auf das erste Objekt und auf den Typ des Containers erkennen Sie jedoch, dass das importierte Objekt nicht mehr als Prozess verwendet werden kann. Es ist zu einem PSCustomObject geworden. Trotzdem ist es immer noch eine Verbesserung gegenüber dem Export als einfache Zeichenkette. Sie können es einfach importieren und als einfachen Datenspeicher verwenden.
Der nächste große Vorteil beim Arbeiten mit CSV-Dateien ist, dass Sie sie mit Microsoft Excel bearbeitbar machen können. Dazu müssen Sie nur das Trennzeichen von Komma (,) auf Semikolon (;) ändern, da dies das Standard-Trennzeichen für Excel-Dateien ist. Sie können für diese Aufgabe das dedizierte -Delimiter-Flag verwenden.

#Exporting as CSV with specified delimiter ';'Get-Process | Export-Csv C:\temp\exportedProcesses.csv -Delimiter ';'#Importing the data$data = Import-Csv C:\temp\exportedProcesses.csv -Delimiter ';'#Showing the data$data | Out-GridView

Sein Sie hier jedoch vorsichtig, da dies ein kulturspezifisches Verhalten ist. Um die Probleme mit den verschiedenen Kulturen zu vermeiden, können Sie das Flag -UseCulture verwenden.
Jetzt ist die Bearbeitung mit Excel möglich. Um die Leistungsfähigkeit der PowerShell zu demonstrieren, werden wir nun die Datei mit Excel über die PowerShell und die Verwendung des ComObjects von Excel selbst öffnen.

#Create ComObject for Excel$excel = New-Object -ComObject Excel.Application#Make it visible$excel.Visible = $true#Open the CSV file$excel.Workbooks.Open($exportedFile)

Sie können versuchen, eine CSV-Datei zu öffnen, die mit dem Komma und dem Semikolon als Trennzeichen exportiert wurde, um den Unterschied zwischen den beiden Ansätzen selbst zu sehen.
Abschluss:
Wir haben bereits einen Abschnitt zum Verständnis der Arbeit mit CSV behandelt. Wir haben die Cmdlets export-csv behandelt, um Dateien als CSV zu exportieren. Sie werden vor allem beim Erstellen von Berichten verwendet, die direkt in Excel angezeigt werden können. Ich persönlich habe Export-CSV und Import-CSV bei der Arbeit mit der Azure-Plattform verwendet, die wir an anderen Tagen im Detail behandeln werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.