Command-separated Value
oder CSV
-Dateien sind eine sehr beliebte Art von Textdateien, die für verschiedene Zwecke verwendet werden. Das Besondere an CSV-Dateien ist die Möglichkeit, strukturierte Daten zu speichern, indem die Werte oder Spalten mit Kommas voneinander getrennt werden. CSV-Dateien sind mit Excel-Dateien zum Import und Export kompatibel.
Export in kommagetrennte CSV-Datei
Wir beginnen mit einem einfachen Beispiel. Get-Process
Der Befehl wird verwendet, um aktuell laufende Prozesse mit verschiedenen Informationen wie Handle, NPM, CPU,ID, ProcessName usw. aufzulisten. Wir können den Befehl Export-CSV verwenden, um diese Prozessinformationen mit dem Befehl abgegrenzt zu speichern.
PS> Get-Process
Nun können wir diese Informationen über laufende Prozesse in eine CSV-Datei schreiben, indem wir die Ausgabe von Get-Process umleiten. Wir werden den Dateinamen mit der Option -Path
angeben. Der Dateiname wird ProcessList.csv sein.
PS> Get-Process | Export-CSV -Path ProcessList.csv
Alternativ können wir mit der Option -Path ein anderes Verzeichnis angeben. Im folgenden Befehl legen wir die Datei ProcessList.csv in das C:\Users\İsmail Baydan\Desktop
.
PS> Get-Content 'C:\Users\İsmail Baydan\Desktop\ProcessList.csv'
Delimiter für CSV-Datei setzen
Delimiter sind ein wichtiger Bestandteil der CSV-Dateien. Standardmäßig verwenden CSV-Dateien den Befehl als Begrenzungszeichen. Aber wir können das Trennzeichen ändern, wie wir wollen. Wir verwenden die Option -Delimeter, um ein anderes Begrenzungszeichen zu setzen. Im folgenden Beispiel werden wir das Gleichheitszeichen = als Begrenzungszeichen festlegen. Das Setzen des Begrenzungszeichens innerhalb der Anführungszeichen ist ein sehr guter Weg, um Fehler zu vermeiden.
PS> Get-Process | Export-CSV -Delimiter "=" -Path ProcessList.csv
Export in eine durch Semikolon begrenzte CSV-Datei
Das Komma ist das Standard-Begrenzungszeichen für CSV-Dateien. Wir können aber auch andere Begrenzungszeichen verwenden, um Spalten zu trennen. In einigen Fällen kann ein Komma innerhalb des Inhalts verwendet werden, den wir in die CSV-Datei stellen wollen. Dies führt zum Absturz der CSV-Datei, da Begrenzer und Inhalt gleich sind und es fehleranfällig ist, den Inhalt mit dem Begrenzer zu parsen. Eine gute Alternative zum Befehlsbegrenzer ist daher das Semikolon, das in CSV-Dateiinhalten selten verwendet wird. Im folgenden Beispiel setzen wir das Semikolon als Trennzeichen.
PS> Get-Process | Export-CSV -Delimiter ";" -Path ProcessList.csv
Eigenschaften zum Schreiben der CSV-Datei auswählen
Bis jetzt haben wir mit dem Befehl Get-Process gearbeitet, der alle Eigenschaften der aktuell laufenden Prozesse auflistet. In manchen Fällen müssen wir nicht alle Eigenschaften in die CSV-Datei schreiben. Wir können auswählen, welche Eigenschaften in die CSV-Datei aufgenommen werden können. Wir verwenden den Befehl Select-Object
und seine Option -Property
wie unten.
PS> Get-Process | Select-Object -Property ProcessName,Id | Export-CSV -Path ProcessList.csv
An die bestehende CSV-Datei anhängen
Ein weiterer Anwendungsfall für den Befehl Export-CSV ist das Hinzufügen von neuem CSV-Inhalt in den bestehenden CSV-Inhalt. Wir können die Option -Append
verwenden, die neue CSV-Inhalte in die bestehende Datei einfügt.
PS> Get-Process | Export-CSV -Delimiter -Append -Path ProcessList.csv
Vorhandene CSV-Datei nicht überschreiben
Standardmäßig überschreibt der Befehl Export-CSV die bestehende Datei ohne Warnung. Dies kann mit der Option -NoClobber
verhindert werden, die die bestehende Datei nicht überschreibt und eine Fehlermeldung ausgibt, wenn die Datei bereits existiert.
PS> Get-Process | Export-CSV -NoClobber -Path ProcessList.csv
Nur-Lese-Dateien überschreibenNur-Dateien
Standardmäßig können Nur-Lese-Dateien bearbeitet werden, standardmäßig angehängt werden. Aber der Export-CSV-Befehl kann das Nur-Lesen-Attribut zum Bearbeiten ändern und dann wieder auf Nur-Lesen zurücksetzen. Wir erzwingen den Schreibvorgang mit der Option -Force
wie unten.
PS> Get-Process | Export-CSV -Append -Force -Path ProcessList.csv
CSV-Dateikodierung einstellen
Da die CSV-Datei eine Textdatei ist, verfügt sie über eine Kodierungsoption. Standardmäßig ist UTF-8 die Standardkodierung für die Text- und CSV-Dateien. Aber in manchen Fällen müssen wir die Standardkodierung ändern und eine bestimmte Kodierung festlegen. Wir können die Option -Encoding verwenden und einen Kodierungsnamen wie ASCII angeben. Im folgenden Beispiel wird die Kodierung der CSV-Datei auf ASCII gesetzt.
PS> Get-Process | Export-CSV -Encoding ASCII -Path ProcessList.csv
Nachfolgend sind beliebte und verfügbare Kodierungsformate aufgeführt, die mit dem Export-CSV verwendet werden können.
- ASCII
- BigEndianUnicode
- OEM
- Unicode
- UTF7
- UTF8
- UTF8BOM
- UTF8NoBOM
- UTF32