Verwenden des Cmdlet \"Import-Csv\"

Einlesen einer Datei, die durch Kommas getrennte Werte enthält

Mit dem Cmdlet Import-Csv können Sie Daten einer Datei lesen, die durch Kommas getrennte Werte enthält (CSV-Format), und diese Daten anschließend in der Windows PowerShell-Konsole in Tabellenformat anzeigen. Nehmen wir beispielsweise an, Sie verwenden die Datei "C:\Scripts\Test.txt", die folgende Daten enthält:

Name,Department,Title
Pilar Ackerman,Research,Manager
Jonathan Haas,Finance,Finance Specialist
Ken Myer,Finance,Accountant

Sie möchten diese Daten am Bildschirm anzeigen, und zwar in einer Tabelle, die sich sehen lassen kann? Rufen Sie dazu einfach das Cmdlet Import-Csv auf, und geben Sie dann den Pfad der Datei an, die Sie öffnen möchten:

Import-Csv c:\scripts\test.txt

Sinngemäß erstellt Windows PowerShell eine Ausgabe, die wie folgt aussieht:

Name                       Department                 Title
----                       ----------                 -----
Pilar Ackerman             Research                   Manager
Jonathan Haas              Finance                    Finance Specialist
Ken Myer                   Finance                    Accountant

Das ist schon mal OK. Wenn es allerdings wirklich Spaß machen soll ... – Ja, gut, wenn es um Spaß geht, würden Sie wahrscheinlich etwas anderes tun, als CSV-Dateien zu importieren. Dann sagen wir mal so: Wenn Sie zumindest relativ gesehen etwas Spaß haben möchten, dann übergeben Sie die importierten Daten an das Cmdlet Where-Object. Folgender Befehl ruft beispielsweise nur die Mitarbeiter der Finanzabteilung ab:

Import-Csv c:\scripts\test.txt | Where-Object {$_.department -eq "Finance"}

So sieht das entsprechende Dataset aus:

Name                       Department                 Title
----                       ----------                 -----
Jonathan Haas              Finance                    Finance Specialist
Ken Myer                   Finance                    Accountant

Zugegeben, die rechte Seite der Pipeline sieht ein wenig kryptisch aus. Allerdings ist sie nicht allzu schwer zu entschlüsseln. $_ ist einfach eine Windows PowerShell-Bezeichnung für das aktuelle Objekt, die natürlich für die Textdatei "C:\Scripts\Test.txt" steht. .department ist eine "dot"-Standardbezeichnung, die sich nicht von einem Verweis auf eine WMI-Eigenschaft unterscheidet, bei der man objItem.Name angibt. Wir wollen also für diese Textdatei nur den Wert der Eigenschaft "Department" prüfen, das heißt das Feld "Department". Wenn das Feld gleich (-eq) dem Feld "Finance" ist, soll es angezeigt werden. Wenn es ungleich dem Feld "Finance" ist, soll es nicht angezeigt werden.

Nehmen wir an, Sie möchten die Datensätze aller Mitarbeiter anzeigen, außer denen der Finanzabteilung. In diesem Fall würden Sie den folgenden Befehl verwenden, wobei –ne für "Ungleich" steht:

Import-Csv c:\scripts\test.txt | Where-Object {$_.department -ne "Finance"}

Dieser Befehl gibt die folgenden Daten zurück:

Name                       Department                 Title
----                       ----------                 -----
Pilar Ackerman             Research                   Manager

Darf mehr als ein Element in einer "Where"-Klausel vorkommen? Klar doch: Fassen Sie die beiden Kriterien einfach mit –and oder –or zusammen. Folgender Befehl gibt beispielsweise nur die Buchhalter der Finanzabteilung zurück:

Import-Csv c:\scripts\test.txt | Where-Object {$_.department -eq "Finance" -and $_.title -eq "Accountant"}

Was bedeutet das? Sie erhalten dadurch folgende Informationen:

Name                       Department                 Title
----                       ----------                 -----
Ken Myer                   Finance                    Accountant

Im Gegensatz dazu gibt dieser Befehl eine Liste von Mitarbeitern zurück, die entweder in der Forschungsabteilung arbeiten oder als Buchhalter tätig sind:

Import-Csv c:\scripts\test.txt | Where-Object {$_.department -eq "Research" -or $_.title -eq "Accountant"}

Sie können sich wahrscheinlich schon denken, welche Angaben zurückgegeben werden, wenn Sie diesen Befehl ausführen:

Name                       Department                 Title
----                       ----------                 -----
Pilar Ackerman             Research                   Manager
Ken Myer                   Finance                    Accountant

Sehr gut.

Aliase für "Import-Alias"

  • ipcsv