2017-07-27 5 views
-1

diesen Schnipsel vor:eine Variable erweitern und wickeln Sie es in Anführungszeichen

$foo = "b a r" 
Some-Cmdlet -MyParam $foo 

I b a r als -MyParam Parameter zu übergeben möchte. Es funktioniert offensichtlich nicht, weil der Anruf ausgewertet wird:

und Leerzeichen werden den Parameter in 3 separate Zeichen aufteilen. Ich könnte Anführungszeichen wie folgt hinzufügen:

Some-Cmdlet -MyParam '"'+$foo+'"' 

aber ich frage mich, ob es einen Weg gibt, um die Anführungszeichen zu verwenden, ohne sie zu verketten, während die Variable zu erweitern. Mit anderen Worten: ohne + zu verwenden. Wahrscheinlich so etwas wie diese:

Some-Cmdlet -MyParam "\"$foo\"" 

hatten \ ein Escape-Operator gewesen.

+2

Versuchen Sie, eine Variable in ein Cmdlet zu übergeben und dem Variablenwert Anführungszeichen hinzuzufügen? Abhängig davon, wie die Variable gebildet wird, können Sie die Anführungszeichen zu der Zeichenkette der Variablen hinzufügen, wenn Sie sie zum ersten Mal setzen (zB '$ myvar =" \ '" my value \ "" "). Der Backtick \' ist ein Escape Zeichen in Powershell. –

+2

"* Es wird offensichtlich nicht funktionieren, da der Aufruf ausgewertet wird:' Some-Cmdlet -MyParam bar' und Leerzeichen teilen den Parameter in 3 separate Zeichen. * "- Wie ist das offensichtlich? Natürlich wird das nicht tun - selbst wenn die Sprache den interaktiven Kommandozeilen-Parser auf den Inhalt einer Variablen laufen ließ (warum würde es?) und die Zeichenfolge durch Leerzeichen aufteilen würde, wäre der Parameter nicht drei separate Zeichen, weil Arrays kein Leerzeichen sind Englisch: www.doc-o-matic.com/webhelp/TdlgEditEdit.html – TessellatingHeckler

+0

Wie es hätte es viel weniger Zeit gekostet, es zu versuchen, als all das zu schreiben und zu formatieren: [Beispiel auf TryItOnline] (https: // tio .run/## K8gvTy0qzkjNyfn/P600L7kkMz9PoSS1uEshWqEgsSgxV0OlQlNBSVelQldJoZZLJS0/X8FWQSlJIVGhSIkLrFC3Qg Ek/P8/AA) – TessellatingHeckler

Antwort

0

Ihre Annahme über die Interpretation der Zeichenfolge ist falsch. Wenn Sie eine Zeichenfolge übergeben, bleibt sie eine Zeichenfolge.

Function '/a r g 1' 
"$($Args[0])" 
> /a r g 1 
Verwandte Themen