Lesen Sie eine Csv-Datei mit Powershell und erfassen Sie die entsprechenden Daten

8

Mit PowerShell möchte ich Benutzereingaben erfassen, die Eingabe mit Daten in einer kommagetrennten CSV-Datei vergleichen und entsprechende Daten in eine Variable schreiben.

Beispiel:

  1. Ein Benutzer wird aufgefordert, ein " Store_Number " einzugeben, sie geben " 10 " ein.
  2. Die Eingabe " 10 " wird dann mit den Daten an der ersten Position verglichen     oder Spalte der CSV-Datei.
  3. Daten wie " District_Number " in der entsprechenden Position / Spalte wird erfasst und in eine Variable geschrieben.

Ich habe diese Methode mit einer Excel-Datei (.xlsx) arbeiten lassen, habe sie aber für sehr langsam gehalten. Hoffe, dass PowerShell eine CSV-Datei effizienter lesen kann.

Link zu einer Beispiel-CSV-Datei hier :

%Vor%     
squishy79 22.05.2013, 02:54
quelle

3 Antworten

9

Was Sie sich anschauen sollten, ist Import-Csv

Sobald Sie die CSV-Datei importiert haben, können Sie die Spaltenüberschrift als Variable verwenden.

Beispiel CSV:

%Vor%

Jetzt importieren wir die CSV und durchlaufen die Liste, um sie einem Array hinzuzufügen. Wir können dann die Eingabe des Wertes mit dem Array vergleichen:

%Vor%

Und hier ist die Ausgabe:

    
Austin T French 22.05.2013, 04:14
quelle
5

Also habe ich herausgefunden, was mit dieser Aussage nicht stimmt:

%Vor%

(Original)

%Vor%

(Vorgeschlagen, Sie müssen Zitate verwenden; andernfalls wird es nicht funktionieren und ISE wird Ihnen einen Fehler geben)

Es erfordert -Delimiter "|" , damit die Variable mit einem Array von Elementen gefüllt wird. Andernfalls zeigt Powershell ISE die Liste der Elemente nicht an.

Ich kann nicht sagen, dass ich den Operator | empfehlen würde, da er verwendet wird, um Cmdlets ineinander zu verschachteln.

Ich kann die if-Anweisung immer noch nicht als wahr ausgeben und die über die Eingabeaufforderung eingegebenen Werte ausgeben.

Wenn jemand anders helfen kann, wäre es großartig. Ich schätze immer noch den Beitrag, es war sehr hilfreich!

    
ez4sheezee 17.10.2013 21:43
quelle
2

Altes Thema, aber nie klar beantwortet. Ich habe auch an ähnlichem gearbeitet und die Lösung gefunden:

Die Pipe (|) in diesem Codebeispiel von Austin ist nicht das Trennzeichen, sondern das ForEach-Objekt. Wenn Sie es als Trennzeichen verwenden möchten, müssen Sie Folgendes tun:

%Vor%

Ich habe gut 15 Minuten damit verbracht, bevor ich verstanden habe, was vor sich geht. Hoffe, die Antwort hilft der nächsten Person, dies zu lesen, die verschwendeten Minuten zu vermeiden! (Sorry für die Erweiterung auf Ihren Kommentar Austin)

    
Nils E Lie 13.06.2017 07:47
quelle

Tags und Links