PowerShell – 03.1 – Strings auf bestimmten Inhalt prüfen mit dem Parameter -match

Um heraus zu finden, ob sich ein bestimmtes Wort oder eine beliebige Zeichenkette in einem String befindet, gibt es den Parameter -match. Vergleichbar ist -match  von der Wirkungsweise mit Funktion inStr() im VBS.
Enthält die zu untersuchende Zeichenkette den gesuchten Inhalt, gibt -match true aus. Somit ist -match ein boolescher Wert. dennoch ist -match nicht Case sensitiv.

Zum Parameter -match gibt es noch einen passenden Parameter -notmatch. Dieser Prüft ob eine gesuchte Zeichenkette nicht enthalten ist. Ist die gesuchte Zeichenkette nicht enthalten, so ist der Wert true.

Codebeispiele

-match

-notmatch

rewe

PowerShell – 03 – Strings zerlegen, zuschneiden, Teile ausschneiden, verbinden

Es gibt mehrere nützliche Funktionen um in PowerShell einen String zu bearbeiten. Um diese nutzen zu können, sollte man ein Grundverständnis für eine String haben. Jedes Zeichen in einem String ist mit einer numerischen Wert versehen, angefangen mit 0. Also ist ein String ein eindimensionales Array. So gibt es die Möglichkeit jedes Feld einzeln in unserem Beispielstring $bspStr = „Ich-bin-ein-String-mit-Trennzeichen.“ mittels $bspStr[i] abzurufen. Mit $bspStr[2] würden wir das „h“ aus „ich“ anzeigen lassen. Array Felder werden immer mit [ ] aufgerufen. Strings lassen sich einfach mit dem „+“ Zeichen zu einem neuen String verbinden.

Die wohl wichtigsten drei Funktionen habe ich folgender Tabelle kurz beschrieben.

Funktion Beschreibung
Split() Split trennt einen String bei einem gewünschten Zeichen. Das Ergebnis ein Array.
Remove() Remove entfernt eine bestimmten Bereich aus dem String.
Replace() Mit Replace kann ein bestimmtes Zeichen, oder eine Zeichengruppe durch eine andere ersetzt werden.
Length Length zeigt die Länge des Strings an, beginnend immer mit 0.

Nehmen wir wieder unserem Beispielstring „Ich-bin-ein-String-mit-Trennzeichen.“ Mit Split(„-„) können wir den String problemlos beim Trennzeichen „-“ trennen. Dies geht natürlich auch mit jedem anderem Zeichen, eingeschlossen Tabs und Leerzeichen. Durch Remove(0,3) entfernen wir das „Ich“ aus dem String. Die erste Ziffer zeigt an ab wo der String entfernt werden soll, die zweite Ziffer gibt die Länge des zu entfernenden Stringteils an. Mit Replace(„i“,“!“) können wir spielend alle i’s zu Ausrufezeichen umwandeln. Wobei das große I in Ich bleibt. Da dies einen anderen ASCII Code hat.

Codebeispiele

Einzelne Zeichen aus String ziehen, Strings verbinden

Split()

Remove()

Replace()

Length

rewe

PowerShell – 02 – Random

Es gibt die Möglichkeit unter PowerShell eine Random Zahl oder etwas anderes zufällig auszugeben. Beispielsweise kann man Zahlen von eins bis Zehn zufällig ausegben lassen oder auch Buchstaben.

Das Ganze wird mittels der Funktion Random realisiert. Aufzurufen ist diese über System.Random. Seit PowerShell 3.0 ist dies jedoch erheblich einfacher geworden. Siehe dazu Get-Random.

Es muss ein neues Objekt erstellt werden, New-Object System Random und einer Variable $x zugewiesen werden. $x = New-Object System Random. Über die Objekteigenschaft von $x wird die Eigenschaft next() genutzt um den minimalen und maximalen Wert festzulegen.Bede werde sind durch ein Komma getrennt $x.next(1,10). Nun kann eine Ausgabe über eine Hilfs Variable erzeugt werden. $y = $x.next(1,10).

Codebeispiele

Würfel

 

Zufallsbuchstabe

Get-Random

Mittels der Cmdlet Get-Random lässt sich ein zufälliger Wert wesentlich einfacher und bequemer erstellen. Dazu ein praktisches Beispiel, mittags kommt die beliebte Frage auf „Wo sollen wir den nur essen gehen?“ Gibt es eine breite Auswahl an Restaurants, kann hier Get-Random helfen 😉

Dazu wird ein Array mit den allen Restaurants bzw. Speisemöglichkeiten benötigt. Diese können mit Semikolon oder Komma separiert werden (siehe Script).

 Die Auswahl erfolgt dann mittels Get-Ramdom, als Maximalwert wird die Anzahl der Restaurants genommen, also der Count von unserem Array. Ein Minimum muss nicht angegeben werden, wenn dies gleich Null ist. Jedoch geht es noch einfacher, dies zeigt das letzte Codebeispiel im Artikel.

Das Script kann man natürlich auch noch mit einer Messagebox und einer Dauerschleife füf eine Neuwahl aufbessern.

Über den Wiederholen Button in der Messagebox kann solange ein neues Restaurant gewählt werden, bis das gewünschte „zufällig“ angezeigt wird.

Restaurantwahl

Ebenso können auch Strings zufällig aus einer vorgebenden Liste gewählt werden. Hier wieder auf die Restaurantwahl bezogen.

Wie zusehen ist, kann die Wahl des Restaurants auch in einen Einzeiler (Oneliner) packen. Weiter Beispiele mit Get-Random  gibt es im Technet Artikel [engl.] von MS.

rewe

PowerShell – 01 – Tabs, Zeilenumbrüche, Char

In Vielen Scripten werden Zeilenumbrüche, Tabs oder Sonderzeichen (über Char) benötigt um gewisse Abläufe zu steuern. Um in Powershell wie in VBS diese darzustellen, gibt es mehrere  Möglichkeiten.

VBS

PowerShell

Beschreibung

vbNewLineChr(10), Chr(13) n[char]10, [Char]13[System.Environment]::NewLine Erzeugt einen Zeilenumbruch
vbCrLf n[char]10, [Char]13[System.Environment]::NewLine Erzeugt ebenfalls einen Zeilenumbruch
vbTab `t[char]9 Setzt einen Tab Horizontal

Es gibt noch einige Funktionen mehr, allerdings sind dies die am häufigsten genutzten (in meinem Fall). Weiter Funktionen werden auf learningpcs – powershell-vbscript-character beschrieben.

Bevorzugt nutze ich die Variante über Char. Ich finde das ist die sauberste Lösung ohne irgendwelche Akzentzeichen, die leicht falsch gesetzt werden könnten. Über die ASCII Tabelle ist es auch möglich alle anderen Zeichen abzubilden.

Codebeispiele

Tab

NewLine

rewe