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