PowerShell:命令模式下的字符串扩展

时间:2013-03-07 21:49:07

标签: powershell

命令模式下字符串扩展的规则是什么?如果在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>

如何在此示例中“正确”展开字符串?

1 个答案:

答案 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"