Wenn Sie Informationen von PowerShell in eine CSV-Datei senden möchten, hilft Ihnen das Export-CSV-Cmdlet. Dieses Cmdlet spart Administratoren viel Zeit, indem es lose Texte in ein strukturiertes Format umwandelt. Anstatt mit Excel herumzuhantieren, können wir stattdessen PowerShell verwenden, um CSV-Dateien zu erstellen.
Sie können CSV-Dateien aus jedem PowerShell-Objekt mit dem Export-Csv-Cmdlet erstellen, um Berichte zu erstellen, an Datenbanken zu senden und vieles mehr.
Das CSV-Format ist lediglich eine kommaseparierte Liste von Zeilen, die als Textdatei gespeichert wird. Da es sich nur um eine Textdatei handelt, könnten wir theoretisch einfach einen generischen Textdateibefehl wie „Set-Content“ verwenden, um die Aufgabe zu erledigen. Die Verwendung eines generischen Befehls würde jedoch erfordern, dass wir die erforderliche CSV-Struktur selbst erstellen. Warum sollten wir das tun, wenn wir bereits einen CSV-Exportbefehl namens „Export-Csv“ haben, um CSV-Ausgaben in eine Datei zu senden?
CSV-Dateien benötigen eine spezifische Struktur. Die Fähigkeit dieses Cmdlets, Informationen in CSV-Dateien zu verstehen, zu lesen und zu transformieren, ist es, was dieses PowerShell-Cmdlet so praktisch macht.
Verwalten und Berichten Sie über Active Directory, Exchange und Microsoft 365 mit ManageEngine ADManager Plus. Laden Sie die kostenlose Testversion herunter!
Objekte -eq CSV-Zeilen
Das Export-Csv
Cmdlet hat einen einzigen Zweck; es speichert PowerShell-Objekte in einer CSV-Datei.
Angenommen, Sie haben ein Objekt mit zwei Eigenschaften namens foo
und bar
. Jede dieser Eigenschaften hat die entsprechenden Werte 1
und 2
. Wenn Sie dieses Objekt an Export-Csv
senden, wird eine CSV-Datei mit zwei Spalten und einer einzigen Zeile erstellt. Sie können dann den Inhalt der CSV importieren und überprüfen, wie er aussieht.
PowerShell behandelt im Grunde genommen ein Objekt im Speicher und eine CSV-Datei gleich! Es ist auch so, dass meine Spaltenbeschriftungen als Header dienen sollen. Das Exportieren von Objekten mit diesem Cmdlet ist wie das Speichern des Objekts im Dateisystem. Mit dem generischen Text-PowerShell-Befehl Get-Content
können wir den Roh-Text inspizieren, um zu sehen, was der Export-Csv
-Befehl exportiert hat.
Beachten Sie, dass der Befehl doppelte Anführungszeichen um jeden Zeileneintrag verwendet. Dadurch können Sie auch Felder mit Leerzeichen einschließen.
Nützliche Parameter für Export-CSV
In Windows PowerShell 5.1 gibt das Export-CSV-Cmdlet den Typ des Objekts an, das die CSV-Datei erstellt hat. Wenn Sie diese Zeile nicht sehen möchten, ist ein beliebter Parameter NoTypeInformation
, der diese Zeile vollständig eliminiert.
Wenn Sie mit vielen verschiedenen CSV-Dateien oder Datenquellen arbeiten, werden Sie möglicherweise auf die harte Tour feststellen, dass Export-CSV vorhandene Dateien überschreibt. Kein Problem jedoch, wenn Sie den Append
-Parameter verwenden. Der Append
-Parameter ermöglicht es Ihnen, Zeilen zur CSV hinzuzufügen, anstatt eine vorhandene Datei zu überschreiben.
Ein weiterer nützlicher Parameter ist Delimiter
. Gelegentlich müssen Sie möglicherweise eine CSV-Datei erstellen, die nicht den üblichen Listentrenner (Komma) zur Trennung von Feldern verwendet. Möglicherweise müssen Sie stattdessen eine Datei mit vielen Daten erstellen, die Tabulatoren oder sogar Semikolons als Trennzeichen verwendet. Der PowerShell-Cmdlet Export-Csv
kann uns auch hierbei helfen, indem wir den gewünschten Trennzeichen angeben.
Umgang mit Anführungszeichen
Beim Erstellen von CSV-Zeilen schließt Export-Csv
alle Felder in Anführungszeichen ein. In einigen Situationen ist dies möglicherweise nicht erwünscht. Leider gibt es keine Möglichkeit, dies zu verhindern. Aber mit etwas zusätzlichem Code können Sie es trotzdem erreichen.
Im Folgenden sehen Sie ein Beispiel für das Erstellen der CSV-Datei. Anschließend liest Get-Content
die rohe Textdatei, ersetzt alle doppelten Anführungszeichen im Speicher durch nichts. Dann schreibt Set-Content
diese Informationen im Speicher zurück auf die Festplatte.
Verwalten und Berichten Sie Active Directory, Exchange und Microsoft 365 mit ManageEngine ADManager Plus. Laden Sie die kostenlose Testversion herunter!
Zusammenfassung
Der Export-Csv
Befehl ist ein einfaches, aber äußerst nützliches Werkzeug zur Verwaltung von CSV-Daten. Er kann die Struktur einer CSV-Datendatei verstehen und PowerShell-Objekte in CSV-Zeilen umwandeln.
I’m not about to go back to batch, or VBScript where creating a CSV file from an existing object required instantiating a FileSystemObject, creating a loop and a bunch of Write()
methods!
Dieser Befehl ist ein weiterer guter Grund, noch heute mit dem Schreiben von PowerShell-Code zu beginnen!