【问题标题】:PowerShell: String expansion in command modePowerShell:命令模式下的字符串扩展
【发布时间】:2013-03-08 05:53:53
【问题描述】:

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

在本例中,如何使字符串“正确”展开?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    如果我正确理解您,您希望将所有内容都扩展并作为单个参数。尝试用引号“收集”参数。

    PS > $sourcepath = "src"
    
    PS > & EchoArgs.exe "-doc-sources+=$($sourcePath)"
    Arg 0 is <-doc-sources+=src>
    

    所以试试这个:

    & c:\asdoc.exe "-doc-sources+=$($sourcePath)"
    

    下面的示例也可以在您想要扩展变量而不是变量内的属性时使用(例如 $myobject.sourcepath)

    & c:\asdoc.exe "-doc-sources+=$sourcePath"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 2021-03-22
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多