Windows-Praxis
Workshop: In der PowerShell mit regulären Ausdrücken arbeiten
Sonder- und Escape-Zeichen und natürlich die Hochkommas
Neben der Problematik der Metazeichen, die in verschiedenen Zusammenhängen unterschiedliche Effekte hervorrufen, kommt es gerade beim Vergleich und bei der Untersuchung von Zeichenketten immer wieder zu einem anderen Problem: Die Metazeichen, die von den regulären Ausdrücken verwendet werden, tauchen häufig auch als Sonderzeichen in Zeichenketten auf und wollen dann entsprechend behandelt werden.
Grundsätzlich gilt dabei: Sollen diese Meta- oder Sonderzeichen nicht mit ihrer Funktion aufgerufen werden, so müssen sie maskiert werden. Das gelingt mit dem sogenannten "Escape"-Zeichen, das den regulären Zeichen dann mitteilt, dass sie das nächste Zeichen hinter diesem Escape-Zeichen genau so "betrachten" sollen, wie es da steht:
PS c:\> ‘Der $hell Fisch‘ -match "\$\w+"
True
Name Value
0 $hell
durch die Shell - so konnten wir hier erreichen, dass das Dollarzeichen auch als solches gesehen wird und die Shell nicht versucht, hier den Inhalt der Variablen "$hell" einzusetzen. Sie können den Unterschied leicht erkennen, wenn Sie diese Form der Eingabe ausprobieren:
PS c:\> "Der $hell Fisch" -match "\$\w+"False
Haben Sie zuvor einen anderen Aufruf mit dem -match-Operator ausgeführt, so kann es Ihnen allerdings jetzt passieren, dass Sie den vorherigen Wert in $matches finden. Besetzen Sie also sicherheitshalber diese Variable mit einem Leerstring in der folgenden Form, bevor Sie dieses Experiment ausführen:
$matches=""
Die Möglichkeiten, die Ihnen mit der PowerShell und unter Einsatz von regulären Zeichen zur Verfügung stehen, sind enorm - also haben Sie keine Scheu und probieren Sie diese mithilfe unseres Workshops einfach aus. Es gibt noch viel mehr Einzelheiten, Sonderzeichen und Tricks zu zeigen, aber das würde den Rahmen dieses Artikels deutlich sprengen.
- Mit regulären Ausdrücken arbeiten
Einige Beispiele aus der Praxis, die zeigen, dass der Administrator unter Einsatz der regulären Ausdrücke sehr viel gezieltere und genauere Ausgaben erhält. - Mit regulären Ausdrücken arbeiten
Auch hier können die regulären Ausdrücke verwendet werden: Ein bestimmter Zweig der Registry („uninstall“ bei der Microsoft Software) wird direkt durchsucht und das entsprechend gefilterte Ergebnis ausgegeben.
Zum Abschluss haben wir hier noch vier praxisnahe Beispiele herausgesucht. Überlegen Sie zunächst, was diese Aufrufe wohl anzeigen werden, und probieren Sie diese aus. In unserer Bilderstrecke können Sie dann auch Aufruf und Ausführung dieser Aufrufe sehen, wie sie auf unseren Testsystemen unter Windows 7 und Windows 8 abgelaufen sind:
dir c:\windows | where {$_.name -match "\s"}
(\s vergleicht auf "Whitespaces - also Leerzeichen und so weiter)
get-process [bw]*
get-service | where {$_.name -match "\d{1}"}
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\kb[0-9]*
In unserer Bilderstrecke können Sie dann auch Aufruf und Ausführung dieser Aufrufe sehen, wie sie auf unseren Testsystemen unter Windows 7 und Windows 8 abgelaufen sind. (mje)