-1
考虑这个片断:展开一个变量,并用引号把它包
$foo = "b a r"
Some-Cmdlet -MyParam $foo
我想通过b a r
为-MyParam
参数。它显然不会工作,因为通话将评估为:
Some-Cmdlet -MyParam b a r
和空格会将参数拆分为3个单独的字符。我可以添加引号是这样的:
Some-Cmdlet -MyParam '"'+$foo+'"'
,但我在想,如果有加引号没有连接起来将同时扩大变量的方式。换句话说:不使用+
。可能是这样的:
Some-Cmdlet -MyParam "\"$foo\""
已经\
是一个逃生操作符。
你是否试图将一个变量传递给一个cmdlet并且想要为变量值添加引号?根据变量的形成方式,您可以在第一次设置变量时将引号添加到变量的字符串中(例如,'$ myvar =“\'”my value \'“”'。反引号\'是一个转义字符在Powershell中。 –
“*显然它不会工作,因为调用将评估为:'Some-Cmdlet -MyParam bar'和空格会将参数分成3个单独的字符*” - 这是如何显而易见的?当然它不会那样做 - 即使语言在变量的内容上运行交互式命令行解析器(为什么会这样?),并且将字符串拆分为空格,参数不会是三个单独的字符,因为数组不是空格它会是一个字符和两个未知位置参数的错误。 – TessellatingHeckler
像,它会花更少的时间来尝试它,而不是写所有的和格式化:[TryItOnline上的例子](https:// tio .RUN/## K8gvTy0qzkjNyfn/P600L7kkMz9PoSS1uEShWqEgsSgxV0OlQlNBSVelQldJoZZLJS0/X8FWQSlJIVGhSIkLrFC3Qg EK/P8/AA) – TessellatingHeckler