IT

Replace und Escaping in Powershell

Kürzlich habe ich ein kleines Powershell-Skript geschrieben, dass den Inhalt einer XML-Datei anpassen soll, bevor dieser von einem anderen Programm weiterverarbeitet wird. Im Prinzip soll das ganze nichts wildes machen, sondern lediglich einige Begriffe ersetzen, die im Programm aus dem es exportiert wird nicht veränderbar sind. Dabei muss man allerdings auf das Escaping achten.

Folgender Replace-Befehl funktioniert ohne Probleme und ersetzt in jeder Zeile der Quelldatei die Fundstelle „1234“ durch „5678“ und überschreibt am Ende die Quelldatei:

Problematisch wurde es diesmal, da ich folgenden Befehl nutzen wollte:

Dies funktioniert aber nicht, ebenso wenig wie auf diese Weise:

Die Klammern werden nicht ersetzt, lediglich der Inhalt zwischen den Klammern. Über das Escaping in Powershell habe ich mir gar keine großen Gedanken gemacht, da ich bisher anscheinend keine Sonderzeichen in Powershell ersetzen musste.

Die runden Klammern müssen lediglich wie folgt innerhalb eckiger Klammern eingeschlossen werden um das gewünschte Ergebnis zu erzielen:

 

Tobias Langner

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

Schreibe einen Kommentar

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