命令模式下字符串扩展的规则是什么?如果在cmd.exe上,我会写这个:
c:\asdoc.exe -doc-sources+=src
我需要将其转换为一个字符串,在该字符串中计算实际的源路径(“src”),以便在此行之上的某处执行$sourcePath = "src"
。现在我需要将该cmd.exe命令转换为PowerShell命令。我尝试了以下但它不起作用:
& c:\asdoc.exe -doc-sources+=$sourcePath # does NOT work
& c:\asdoc.exe -doc-sources+="$sourcePath" # does NOT work
& c:\asdoc.exe -doc-sources+=($sourcePath) # does NOT work
我使用了EchoArgs实用程序,它给了我这些结果:
Arg 0 is <-doc-sources+=$sourcePath> # case 1
Arg 0 is <-doc-sources+=$sourcePath> # case 2
Arg 0 is <-doc-sources+=> # case 3
Arg 1 is <src path>
如何在此示例中“正确”展开字符串?
答案 0 :(得分:3)
如果我理解你,你想要扩展所有东西并作为一个论点。尝试用引号“收集”这个论点。
PS > $sourcepath = "src"
PS > & EchoArgs.exe "-doc-sources+=$($sourcePath)"
Arg 0 is <-doc-sources+=src>
所以试试这个:
& c:\asdoc.exe "-doc-sources+=$($sourcePath)"
以下示例也可以使用,因为您想要扩展变量而不是变量内的属性(ex $myobject.sourcepath
)
& c:\asdoc.exe "-doc-sources+=$sourcePath"