PowerShell - Weitergabe berechneten Pfade mit Leerzeichen
Ich versuche etwas wirklich einfach hier, aber kann nicht herausfinden, wohin ich gehe falsch. Ich habe gefunden, dass viele andere nützliche Diskussionen dieser - besonders hier - aber habe nicht gefunden was deckt meine spezifische Szenario.
In der powershell habe ich eingegeben die folgenden:
$path = "c:\program files\"
$path2 = "c:\program files\fred2\"
echoargs $path $path2
echoargs "$path" "$path2"
In beide Anrufe zu echoargs, bekomme ich
Arg 0 is <c:\program files" c:\program>
Arg 1 is <files\fred2">
zurück als das Ergebnis. Wie kann ich die Parameter übergeben werden, durch richtig?
NB: In meiner realen Skript die path-Variablen aufgebaut sind, von ein paar config-Parameter, so kann ich nicht nur geben Sie Sie direkt in einfachen Anführungszeichen.
- Bitte mehr von deinen tatsächlichen code. Wenn ich habe versucht, Ihre Probe bekam ich
c:\program files\
undc:\program files\fred2\
für beide. - sehr seltsam. Ich nur kopiert+eingefügt, die direkt von dieser Frage zurück in die powershell ISE und bekam genau wie ich es beschrieben? welche version der powershell verwenden Sie? Ich bin mit der 2.0 glaube ich
- Ja ich habe gerade definiert eine Funktion test:
function echoargs { $args[0]; $args[1] }
. - Oh sorry ich glaube ich missverstanden. Wenn ich jetzt verstehen, echoargs muss einer anderen Anwendung, und Sie möchten, dass die andere app zu erhalten, einen einzelnen parameter mit Leerzeichen drin...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie umschließen Ihre Ergebnis-strings in single-quotes innerhalb des Bereichs der Ausführung:
Diese wird übergeben an die aufgerufene Anwendung getrennt in einfachen Anführungszeichen, aber da der gesamte string ist immer noch in Anführungszeichen den parameter erweitert wird, richtig.
In der neuesten Tropfen PSCX wir haben update EchoArgs.exe auch zeigen die ganze Befehlszeile als die empfangende app sieht. In diesem Fall bekommen Sie:
Scheint es, dass der
\"
verursacht die abschließenden doppelten Anführungszeichen escapen irgendwo. BTW das gleiche geschieht in CMD.exe was ich sagen kann. Wenn Sie änderungen an Ihrer Pfade zu entfernen, wird der trailing-slash (oder wenn Sie Schrägstriche), würde das nicht passieren.Wenn man diese Pfade von woanders, Sie können entfernen Sie den umgekehrten Schrägstrich in etwa so: