Category Archives: Scripting

Script: Bestimmte Zeile einer Text-Datei auswählen [PowerShell]

Hallo,

ich wollte letztens eine zufällige Zeile einer Textdatei auswählen.
Um das zu erreichen, muss man erst verstehen, wie man auf eine bestimmte Zeile zugreifen kann und das möchte ich euch zeigen.

Als erstes holen wir uns den gesamten Inhalt einer Textdatei:

Nun steht der Inhalt der Text Datei: D:\Coding\Testfile.txt in der Variable Inhalt.
Nun wollen wir die dritte Zeile der Textdatei lesen:

Wenn wir jetzt aber gerne eine zufällige Zeile haben müssen wir den Befehl Get-Random in den Index schreiben. Hier ist aber zu beachten, dass wir den Index nicht überschreiten dürfen. Dafür nutzen wir den Parameter -Maximum, was wir jetzt noch wissen müssen, wie viele Zeilen hat denn die ausgewählte Textdatei.
Das können wir mit dem Befehl Measure-Object in Erfahrung bringen, dort haben wir den Parameter -Line. Zusammengefügt sieht das nun so aus:

Ein Dank geht raus an Martin Binder, der die Korrektur vorschlug nur einmal den Content einzulesen.

Dies funktioniert ebenfalls für eine zufällige oder bestimmte Datei in einem Ordner.

In dem Sinne: Frohes Zeilen wählen.

Script: Dynamisch Parameter zu einem Befehl hinzufügen [PowerShell]

Hallo,

um dynamisch Parameter zu einem PowerShell-Befehl hinzuzufügen, kann man mit Splatting arbeiten.
Das heißt, alle Parameter die an einen Befehl übergeben werden sollen, werden in einem Splat (Hashtable) gespeichert und der Befehl dann im Anschluss mit dem Parameter-Splat aufgerufen.
Als Beispiel nehmen wir nun den Befehl:

Nun wollen wir den Pfad angeben und welchen Dateitypen wir suchen wollen. Der „normale“ Befehl dafür würde so aussehen:

Wir suchen alle Text-Dateien im Verzeichnis C:\Windows\Logs.

In einem Splat würde dies nun wie folgt aussehen:

Und der Befehl würde so aufgerufen werden:

Nun kommen wir aber zum Vorteil von Splat, wir können dynamisch weitere Parameter mit Werten hinzufügen.
Beispielsweise gibt der User erst beim Aufrufen einer Funktion an, dass er es toll finden würde, wenn Dateien ausgeschlossen werden würden, die mit A anfangen.
Das heißt in einer Beispiel-Funktion, dass ein Parameter abgefragt wird und nur wenn dieser einen Wert enthält der Parameter ergänzt wird:

Wenn die Funktion SuperSearchTXTFile nun ohne -ExcludeLetter ‚A‘ aufgerufen werden würde, so würden wieder alle .txt-Dateien (auch die mit A) gefunden werden.

Ich hoffe ich konnte euch das Splatting im allgemeinen und das dynamisch anpassen eben jener etwas verständlicher machen.

In dem Sinne: Frohes dynamisch sein.

 

 

Script: Löschen von Leerzeilen aus einer Text-Datei [PowerShell]

Hallo,

hier ein kurzes PowerShell-Snippet zum Löschen von Leerzeilen einer Text-Datei:

Wir lesen den Inhalt der Datei Test.txt via dem Alias von Get-Content (gc) ein und behalten nur den Inhalt der keine Leerzeile ist mittels -match ‚\S‘. Anschließend wird der geänderte Inhalt in der Datei überschrieben.
Man kann selbstverständlich auch eine andere Ausgabe-Datei wählen.

Weitere Regex-Parameter kann man unter Regex-Cheat-Sheet einsehen.

In dem Sinne: Frohes komprimieren.

Script: JSON – bestimmte Daten auslesen [PowerShell]

Hallo,

heute zeige ich euch wie ihr bestimmte Daten einer JSON Datei auslesen könnt.

Bevor wir aber etwas auslesen können, benötigen wir eine JSON Datei, ich habe mir eine von der Website JSON Example herausgesucht.

Diese JSON-Datei habe ich bei mir nun unter: D:\Coding\JSON\exmaple.json abgelegt.

Bevor wir nun einzelne Werte aus der Datei via PowerShell auslesen können, müssen wir die Datei zuerst in ein Objekt laden. Dies geht über den Befehl ConvertFrom-Json dieses Objekt werde ich dann in eine Variable speichern um es später dann besser auslesen zu können:

Wichtig ist hierbei der -Raw Parameter, da die PowerShell sonst die JSON-Datei nciht richtig einlesen kann, denn es wird erwartet dass die Datei einzeilig ist.
Nun schlummert unser geladenes Objekt in der Variable $json, mittels dem Punkt können wir uns nun durch die einzelnen Sub-Objekte hangeln.
Wollen wir Beispielsweise alle menuitem-Objekte aus dem Array angezeigt bekommen, so können wir das einfach via Punkt-Notation tun:

Erhalten haben wir:

ausgabe-json

Wollen wir aber nur den ersten Wert der Array-Objektes erhalten, so können wir einfach nach dem menuitem den Index 0 abfragen:

 

In dem Sinne: Viel Spaß beim ausprobieren.

 

1 2 3 4 5 13