PowerShell - Übergabe berechneter Pfade mit Leerzeichen

8

Ich versuche hier etwas sehr Einfaches, kann aber nicht herausfinden, wo ich falsch liege. Ich habe viele andere nützliche Diskussionen darüber gefunden - insbesondere hier - aber ich habe nichts gefunden, was mein spezielles Szenario abdeckt.

In Powershell habe ich Folgendes eingegeben:

%Vor%

Bei beiden Aufrufen von Echoargs bekomme ich

%Vor%

zurück als Ergebnis. Wie kann ich die Parameter richtig durchlaufen lassen?

NB: In meinem echten Skript sind die Pfadvariablen aus einigen wenigen Konfigurationsparametern aufgebaut, so dass ich sie nicht einfach in einfachen Anführungszeichen übergeben kann.

    
James Crowley 16.01.2012, 16:40
quelle

2 Antworten

18

Sie müssen Ihre Ergebniszeichenfolgen im Rahmen der Ausführung in einfache Anführungszeichen einschließen:

%Vor%

Dadurch werden sie an die aufgerufene Anwendung übergeben, die in einfache Anführungszeichen eingeschlossen ist, aber da der gesamte String immer noch in doppelten Anführungszeichen steht, wird Ihr Parameter korrekt erweitert.

    
JNK 16.01.2012, 17:04
quelle
4

In der neuesten Version von PSCX haben wir EchoArgs.exe aktualisiert, damit auch die gesamte Befehlszeile angezeigt wird, wie die empfangende Anwendung es sieht. In diesem Fall erhalten Sie:

%Vor%

Es scheint, dass \" bewirkt, dass das nachfolgende doppelte Anführungszeichen irgendwo maskiert wird. BTW das gleiche passiert in CMD.exe von dem, was ich sagen kann. Wenn Sie Ihre Pfade geändert haben, um den Schrägstrich zu entfernen (oder wenn Sie Schrägstriche verwendet haben), würde dies nicht passieren.

%Vor%

Wenn Sie diese Pfade von woanders abrufen, können Sie den folgenden umgekehrten Schrägstrich wie folgt entfernen:

%Vor%     
Keith Hill 16.01.2012 17:54
quelle

Tags und Links