Tipp des Tages: Befehlszeilentools mit –% ausführen

Hin und wieder kommt es vor, dass sich ein Befehlszeilentools nicht in der PowerShell-Konsole ausführen lässt. Der Grund dafür hat etwas mit der Art und Weise zu tun, wie das Befehlszeilentool seine Argumente verarbeitet, insbesondere was Anführungszeichen betrifft. Das klassissche Beispiel ist Find.

Der folgende Aufruf funktioniert nicht:

Abgesehen davon, dass es eigentlich keinen Grund für diesen Aufruf gibt, dürfte es zumindestens von theoretischem Interesse sein, warum bei diesem harmlosen Befehl ein „FIND: Parameterformat falsch“-Fehler die Folge ist.

Die Antwort: Die Anführungszeichen müssen escaped werden. Für diesen und möglichweisere andere solcher Spezialfälle bietet die PowerShell bereits seit der Version 3.0 (?) den praktischen Schalter –%, der einfach den Argumenten vorangestellt wird:

–% bewirkt, dass die PowerShell den folgeden Text nicht mehr selber interpretiert. Etwas einfacher geht es natürlich mit Where-Object bzw. einfach nur mit einem ?.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.