PowerShell – 04 – Textdatei auslesen, bearbeiten, anlegen, befüllen

In PowerShell ist es sehr einfach mit Boardmitteln Dateien im *.txt, *.csv oder sonst einem Format zu erstellen. Um die Datei in einem Script zu laden wird lediglich der Befehl Get-Content benötigt. Anschließend kann der Inhalt spielend in einer Foreach Schleife behandelt werden. Ebenso ist es sehr einfach in eine Datei zuschreiben oder eine neue Datei zu erstellen. Ich nutze die Schreibfunktion gerne für Logs.

Im Inputfile befinden sich mehrereDatensätze die ausgewertet werden sollen.Inputfile

Mit Get-Content laden wir das Textfile, mit der Funktion Split() können wir die Daten trennen und weiterverarbeiten. In der Datei sind alle Informationen mit einen | getrennt. Wir wollen aus den Teilstücken den Satz bilden ‚Name‘ ist geboren in ‚Ort‘, ‚Land‘.

Codebeispiele

Nun sollen diese Sätze wieder in eine Text Datei eingefügt werden. Dies wird mittels Out-File realisiert. Es muss der Zielpfad der Textdatei angeben werden, existiert diese Datei noch nicht, so wird sie angelegt. Existiert die Textdatei bereits, so wird sie überschrieben! Der Pfad wird wie folgt durch den Parameter -FilePath angehangen. Wenn man nun mehrere Daten in das selbe Textfile schreiben möchte, muss man den Parameter -Append hinter -FilePath hängen. Append besagt, dass das File Weiter beschreiben und nicht überschrieben wird.

Codebeispiel

In Variante 1 hat das Outputfile ohne den Parameter -Append erstellt. Die Folge ist das nur der letzte bearbeitete Datensatz in Outputfile zusehen ist, da alle vorherigen immer wieder überschrieben wurden.Outputfile

Nun das ganze mit dem Parameter Append.

Codebeispiel

In Variante 2 ist deutlich zu sehen, das die Datei fortlaufend beschrieben wurde, sogar der Eintrag aus Variante 1 ist noch beinhaltet.Outputfile2

rewe

6 Gedanken zu „PowerShell – 04 – Textdatei auslesen, bearbeiten, anlegen, befüllen“

  1. Hallo,
    ich möchte gerne, dass alle Sätze in ein separates Files geschrieben werden, Das File solle den namen der jeweiligen Ortschaft haben.
    Wie kann ich hier vorgehen?

  2. Hallo,

    ich bin relativ neu in der Thematik und habe von daher wenige Grundkenntnisse. Bisher wurden bei uns in der Firma die Anzahl der User in der AD immer per VBS ausgelesen. Dies soll nun auf PowerShell umgestellt werden und ich soll mal schauen ob ich es hin bekomme. Eigentlich sollte ich auch schon auf einer PowerShell Schulung gewesen sein, aber das ganze hat sich hinausgeschoben wegen Corona,…
    Ich haben durch entsprechende Recherche und Testen auch so weit gebracht, das die User in einer bestimmten OU ausgelesen werden. Hierbei bekomme ich einmal eine Datei mit den ganzen Usern gelistet und eine weitere Datei, wo nur die Anzahl der User steht.
    Dies bekomme ich pro OU, welche ich auslesen. Jetzt soll aber in nur einer Datei, die Anzahl der User stehen. Klappt soweit auch, aber eben nur die Zahl. Wie bekomme ich es hin, dass vor der Zahl noch folgendes steht:

    User in Hamburg: 200
    User in Bremen: 100
    User in Nürnberg: 120
    User in Frankfurt: 150
    User in München: 999

    Vielen Dank im Voraus

    Gruß Patrick

    1. Z.B. wie folgt:
      $usercounthh = 200

      write-host „User in Hamburg $($usercounthh)“
      oder
      $string = „User in Hamburg {0}“ -f $usercounthh # -f steht für Format
      write-host $string
      ————————————————————————-
      User in Hamburg 200
      User in Hamburg 200

  3. Sei gegrüßt!
    Eigentlich dachte ich, dass Deine Beiträge mein Grundlagenverständniss soweit angehoben hätten, dass ich problemfrei eine einfache Abfrage gestalten und umsetzen könnte.
    Leider ein Irrtum oder einfach nur der „böse Tunnelblick“!?
    Folgendes Skript gibt ab Zeile 71 nicht mehr das erwartete Ergebniss zurück, sondern schreibt nur den Pfad der Variablen $a in $b.
    Könntest du ermitteln, woran das liegt?

    Danke im Vorraus und
    mit freundlichen Grüßen

    A. Raue – Leipzig (Plagwitz)

    Zum Script (als HTML zum rauskopieren): http://alph-raue.de/uemmsen/Boardsachen/ping.ps1

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert