HOWTO · PowerShell
Wie man CSV-Dateien in PowerShell kombiniert
Es kann erforderlich sein, mehrere CSV-Dateien zu kombinieren und die Daten in einer Textdatei in PowerShell zu schreiben. Die Cmdlets Import-Csv und Export-Csv können verwendet werden, um diesen Vorgang durchzuführen.
Auf dieser Seite
Es kann eine Anforderung bestehen, mehrere CSV-Dateien zusammenzuführen und die Daten in eine Textdatei in PowerShell zu schreiben. Die Cmdlets Import-Csv und Export-Csv können verwendet werden, um diese Operation durchzuführen.
Das CSV-Format
Es gibt verschiedene Arten von Dateiformaten, die für unterschiedliche Zwecke verfügbar sind. Das CSV verwendet eine einfache Struktur zur Speicherung von Daten.
Es kann verwendet werden, um Daten zwischen verschiedenen Programmen auszutauschen. Wie der Name CSV (Comma-Separated Values) impliziert, sind die Daten durch Kommata getrennt.
Die in einer CSV-Datei gespeicherten Informationen sehen folgendermaßen aus.
UserName,Identifier,First Name,Last Name
jak12,1001,Harry,Smith
Rock90,1002,Jeremy,Hamilton
Rick23,1003,Rakesh,Donas
User01,1004,Lokie,Ferguson
Das Trennzeichen kann ein Leerzeichen, ein Semikolon oder ein anderes Zeichen sein.
Lassen Sie uns zwei csv-Dateien erstellen, die wir mit PowerShell zusammenführen werden.
Inhalt von username.csv:
Inhalt von username2.csv:
Filter die .csv-Dateien in PowerShell
Es wird empfohlen, das Cmdlet Get-ChildItem zu verwenden, um alle .csv-Dateitypen im angegebenen Speicherort abzurufen. Der Parameter -Filter kann übergeben werden, um die Dateien mit der .csv-Erweiterung zu filtern.
Der Ordnerpfad zu den .csv-Dateien kann in Ihrem Fall unterschiedlich sein.
$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv
Lassen Sie uns den verfügbaren Inhalt in der $csvFileList überprüfen.
$csvFileList
Ausgabe:
Holen Sie sich jedes .csv-Dateiobjekt in PowerShell
Lassen Sie uns jedes Dateiobjekt mit seinem vollständigen Namen abrufen. Das Cmdlet Select-Object kann verwendet werden, um jedes Objekt mit seinen erweiterten Eigenschaften abzurufen.
Wir leiten die Ausgabe des vorherigen Schrittes an den Befehl Select-Object weiter.
$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName
Wenn Sie die Variable $csfFilesToImport anzeigen, kann man sehen, dass beide CSV-Dateiobjekte mit dem vollständigen Namen verfügbar sind.
$csfFilesToImport
Ausgabe:
Führen Sie den Inhalt von CSV-Dateien in PowerShell zusammen
Da wir jetzt alle CSV-Dateien haben, lassen Sie uns den Inhalt jeder Datei importieren. Dies würde den Inhalt mit einer gemeinsamen Kopfzeile einfach zusammenführen.
Wir können Import-CSV verwenden, um tabellenähnliche Objekte aus den gepipeten CSV-Dateiinhalten zu erstellen.
$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles
Ausgabe:
Die Informationen wurden aus den beiden angegebenen CSV-Dateien zusammengeführt.
Schreiben Sie den zusammengeführten Inhalt in eine Textdatei in PowerShell
Wir können die obigen Objekte in CSV-Strings umwandeln und in einer Textdatei speichern. Das Cmdlet Export-Csv steht zur Verfügung.
Wir sollten den Parameter Append verwenden, um sicherzustellen, dass der Inhalt nicht ersetzt, sondern angefügt wird.
$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append
Ausgabe:
Das sollte eine neue Textdatei mit dem Namen merged.txt erstellen. Der Inhalt dieser Datei würde aus den beiden oben genannten CSV-Dateien zusammengeführt werden.