PowerShell Import-CSV & Export-CSV

Sie möchten mit PowerShell Daten auslesen und diese super einfach in eine CSV abspeichern um diese dann in z.B. Excell weiterzubearbeiten?

Oder möchten Sie z.B. Daten aus einer CSV in PowerShell einlesen um möglicherweise neu Benutzer im AD an Hand der Liste anzulegen?

Das und mehr zeige ich Ihnen in diesem Artikel.

Bevor wir aber starten, lassen Sie uns schnell ein paar wichtige Grundlagen klären.

PowerShell CSV Grundlagen

Eine CSV ist eine Datei in der wir Informationen Strukturiert speichern können.

Diese CSV Datei, kann dann von Programmen wie Excel usw. verwendet werden um die Daten dann darzustellen.

Wir können aber auch PowerShell dazu verwenden, Daten aus der CSV auszulesen oder eine CSV zu erstellen.

CSV in PowerShell ein- und auszulesen ist eine wichtige Methode die häufig für Automatisierung genutzt wird.

Aber auch, wenn Sie viele Daten aus einer Excel Tabelle erhalten und diese verarbeiten müssen, können Sie PowerShell super nutzen um diese Daten als CSV zu verarbeiten.

Nehmen wir mal an Sie müssen z.B: 100 neue Benutzer in das Active Directory aufnehmen.

Oder Sie müssen mehrere Ordner und Dateien anlegen. usw..

Wie Sie in PowerShell mit CSVs arbeiten, zeige Ich Ihnen nun anhand von konkreten Beispielen.

Import-CSV Befehl und Parameter

Der Befehl zum Importieren einer CSV Datei ist.

Import-CSV -Path [Pfad der CSV Datei] -Delimeter [z.B. ;] -Encoding [z.B. Unicode]

Die folgenden Parameter werden unterstützt.

Parameter

Beschreibung

Path

Gibt den Pfad der CSV Datei an.

Delimeter

Welches Zeichen wird genutzt um Splaten zu unterscheiden.

Encoding

Welcher Encoding Mechanismuss soll verwendet werden?

Export-CSV Befehl und Parameter

Der Befehl zum Importieren einer CSV Datei ist.

$array | Export-CSV -Path [Pfad der CSV Datei] -Delimeter [z.B. ;] -Encoding [z.B. Unicode]7

Die folgenden Parameter werden unterstützt.

Parameter

Beschreibung

Path

Gibt den Pfad der CSV Datei an.

Delimeter

Welches Zeichen wird genutzt um Splaten zu unterscheiden.

Encoding

Welcher Encoding Mechanismuss soll verwendet werden?

Append

Inhalt zu einer bestehenden CSV hinzufügen.

InputObject

Welches PSObject soll in die CSV geschrieben werden.

CSV aus- bzw. einlesen

Ich möchte Ihnen nun anhand eines Beispiels zeigen wie Sie eine CSV verarbeiten können.

Nehmen wir mal an Sie haben eine CSV unter c:\temp\test.csv abgelegt.

Diese CSV hat die Vornamen und Nachnamen diverser Mitarbeiter gespeichert die Sie nun z.B: in die Telefonanlage einpflegen möchten.

Die z.B. sieht dann wie folgt aus.

Vorname;Nachname
Testvorname01;Testnachname01
Testvorname01;Testnachname01

Sie sehen, dass die erste Zeile erstmal die Spaltennamen festlegt.

Durch das "Semikolon ;" sagen Sie wann die Splate zu Ende ist und eine neue beginnt.Genau so tragen Sie dann die Daten pro Zeile ein.

Nun möchten wir in PowerShell das ganze auslesen und in ein Array speichern.

Das machen wir mit den folgenden Befehl.

$ausgabe=Import-CSV -Path c:\temp\test.csv -Delimeter ";"

Das machen wir mit den folgenden Befehl.

Somit haben wir nun die CSV in PowerShell eingelesen und die Daten in eine Variable gespeichert.

CSV erstellen unter PowerShell

In PowerShell können aber nicht nur CSV Importieren sondern aus den Informationen in PowerShell auch eine CSV erstellen.

Nehmen Sie z.B. den Fall das Sie eine Excel Tabelle mit allen Benutzer aus dem Active Directory erstellen möchten.

Dazu erstellen Sie erstmal ein PowerShell Objekt in dem Sie dann Daten speichern können.

So erstellen Sie ein PowerShell Objekt in dem Sie Vorname, Nachname und Telefonnummer abspeichern können.

New-Object PsObject -property @{
'Vorname' = $item.Vorname
'Nachname' = $item.Nachname
'Telefonnummer' = $item.Telefonnummer
}

CSV & Foreach Schleife

Wenn Sie eine CSV in PowerShell eingelesen haben, möchten Sie ja z.B. jede Zeile der CSV durchgehen und dann die Daten verwenden um z.B. einen neuen Benutzer im AD anzulegen.

Lassen Sie uns gemeinsam anschauen wie Sie die Daten einer CSV in PowerShell verarbeiten können.

Wir nehmen mal unsere Daten von Benutzer aus der CSV und für jede Zeile in der CSV werden wir einfach mal den Inhalt anzeigen.

Anstatt den Inhalt anzuzeigen, könnte dann auch ein PowerShell Befehl abgesetzt werden um eben einen Benutzer im AD anzulegen.

Beispiel CSV:

Vorname;Nachname
Testvorname01;Testnachname01
Testvorname01;Testnachname01

PowerShell Script

$ausgabe=Import-CSV -Path c:\temo\test.csv -Delimeter ";"

foreach($zeile in $ausgabe)

{
Write-Host $zeile
}

Beispiel: Active Directory & Import-CSV

In diesem Beispiel möchte Ich Ihnen zeigen, wie Sie neue Benutzer im AD aus den Informationen einer CSV erstellen.

In diesem Screencast zeige ich Ihnen, wie Sie eine CSV erstellen und Benutzer im AD mit PowerShell hinzufügen können.

Insert Video

Dazu erstellen wir zuerst eine Excel Tabelle mit den folgenden Daten.

Vorname

Nachname

SamAccountname

Passwort

ZielOU

Test01

Test01

test01

test

OU=Test,dc=lidemo,dc=local

Test02

Test02

test02

test

OU=Test,dc=lidemo,dc=local

Danach speichern wir die Daten in Excel als .CSV Datei.

Nachdem die Daten als .CSV gespeichert wurden, sollte der Inhalt der CSV so aussehen.

Vorname;Nachname;SamAccountname;Passwort;ZielOU
Test01;Test01;test01;test;OU=Test,dc=lidemo,dc=local
Test02;test02;test02;test;OU=Test,dc=lidemo,dc=local

Nehmen wir mal an, wir haben die Datei unter C:\temp\neuebenutzer.csv abgespeichert.

Dann würde nun das passende Script für das Eintragen der neuen Benutzer in das AD folgendermaßen aussehen.

$benutzerimport=Import-CSV -Path C:\temp\neuebenutzer.csv -Delimeter ";"

foreach($benutzer in $benutzerimport){

New-ADUser -Identity $benutzer.SamAccountname -Firstname $benutzer.Vorname -Lastname $benutzer.Nachnam -Passwort $benutzerpasswort -TargetOU $benutzer.ZielOU

}

Fazit

In diesem Artikel haben Sie gelernt Wie sie mit PowerShell Daten aus einer CSV importieren und wie Sie Daten in eine CSV exportieren.

Zudem haben Sie in einem Screencast gesehen wie Sie Informationen für neue AD Benutzer aus einer CSV auslesen und dann im Active Directory erstellen.

Ich wünsche Ihnen viel Erfolg und Spass beim testen.

Aleksej Kusnir