Windows-Praxis

Workshop: In der PowerShell mit regulären Ausdrücken arbeiten

19.09.2013 (aktualisiert) | von Thomas Bär (Autor)  und Frank-Michael Schlede (Autor) 
Frank-Michael Schlede
Frank-Michael Schlede arbeitet seit den achtziger Jahren in der IT und ist seit 1990 als Trainer und Fachjournalist tätig. Nach unterschiedlichen Tätigkeiten als Redakteur und Chefredakteur in verschiedenen Verlagen arbeitet er seit Ende 2009 als freier IT-Journalist für verschiedene Online- und Print-Publikationen. Er lebt und arbeitet in Pfaffenhofen an der Ilm.
Email:
Thomas Bär
Thomas Bär, der seit Ende der neunziger Jahre in der IT tätig ist, bringt weit reichende Erfahrungen bei der Einführung und Umsetzung von IT-Prozessen im Gesundheitswesen mit. Dieses in der Praxis gewonnene Wissen hat er seit Anfang 2000 in zahlreichen Publikationen als Fachjournalist in einer großen Zahl von Artikeln umgesetzt. Er lebt und arbeitet in Irsee im Allgäu.
Email:
Aufmacherbild
Sie werden von fast allen Programmier- und Script-Sprachen unterstützt und haben sicher schon so manchen Einsteiger zur Verzweiflung getrieben: die regulären Ausdrücke. Als Hilfsmittel für Admins sind sie indes durchaus bewährt. Wir zeigen Ihnen, wie sie unter modernen Windows-Systemen in der PowerShell eingesetzt werden können.
Nicht nur Einsteiger in Programmier- und Script-Sprachen, sondern auch viele "gestandene Administratoren" schütteln nur verzweifelt den Kopf, wenn die Rede auf die regulären Ausdrücke kommt. Zu verwirrend scheinen die Hieroglyphen, die schon altgediente Unix-Administratoren einsetzten, um ihren Anwendern zu demonstrieren, wie mächtig das berüchtigte grep-Kommando sein kann - wenn es richtig einsetzt wird. Aber nicht nur bei den Unix-/Linux-Shell-Programmen, sondern auch bei der modernen PowerShell, die fester Bestandteil aller aktuellen Windows-Client- und Server-Betriebssysteme ist, kann mit den regulären Ausdrücken effizient gearbeitet werden. Die PowerShell unterstützt dabei den gesamten Umfang der regulären Ausdrücke, der vom .NET-Framework bereitgestellt wird.
Wir erläutern in diesem Beitrag die Grundlagen und zeigen anhand einer ganzen Reihe von Beispielen, dass diese kryptischen Zeichen sehr gut in der Praxis eingesetzt werden können.

Das Arbeitsfeld der regulären Ausdrücke: Vergleichen und Ersetzen

Die regulären Ausdrücke kommen hauptsächlich dann zum Einsatz, wenn es darum geht, Vergleiche durchzuführen oder etwa auch Werte und Zeichen zu ersetzen. Neben den Operatoren zum direkten Vergleich von Werten wie "-eq" (equal) oder -gt (greater than) gehören der sogenannte Ähnlichkeitsoperator "-like" (und "-unlike") sowie der Ersetzungsoperator "-replace" und die Übereinstimmungsoperatoren "-match" und "-unmatch" zur Kategorie der Vergleichsoperatoren.
Von ihnen können sowohl "-replace" als auch "-match" und "-unmatch" mit den regulären Zeichen umgehen, während der "-like"-Operator nur mit dem Wildcard-Zeichen "*" zusammenarbeitet, das für eine beliebige Anzahl von Zeichen steht. So bringen dann auch die folgenden beiden Aufrufe die genau gleiche Ausgabe auf den Bildschirm:
Get-Service | where {$_.status -like "running"}
Get-Service | where {$_.status -match "running"}
Beide Aufrufe zeigen alle auf dem jeweiligen System aktiven (running) Prozesse an. Der Unterschied liegt darin, dass die Vergleiche beim Einsatz von "-match" und den regulären Zeichen weitaus genauer und zielgerichteter durchgeführt werden können. Ein Hinweis ist in diesem Zusammenhang noch wichtig: Diese Art der Abfrage ist nicht Case-Sensitive - das bedeutet, dass hierbei nicht zwischen Groß- und Kleinschreibung unterschieden wird und beide Aufrufe sowohl Prozesse finden, die als "running" gekennzeichnet sind, als auch solche, die beispielsweise als "Running" ausgegeben werden.
'Windows-Newsletter' bestellen!

Kostenlose AppsGratis-Apps für Smartphones und Tablet-PCs
Holen Sie sich die kostenlosen TecChannel-Apps für iPhone, iPad, Android, bada und Windows 7 Slate. Oder nutzen Sie mobil.tecchannel.de für alle Geräte.



Das könnte Sie auch interessieren
Ihre Meinung zum Artikel
Benutzername:
Passwort: