通过powershell作为命令行参数传递时,不考虑Msbuild属性

时间:2011-12-26 14:21:10

标签: powershell msbuild powershell-v2.0 msbuild-4.0

我试图通过命令行参数($ args [0])传递属性,如下所示使用Powershell,但它没有被考虑。

if ( Test-path -path $args[0]) {
            &"$MsbuildBinPath\Msbuild.exe" $MSBuildFile  /t:BuildAll "/p:AllComponents=$args[0]"  $Logger $ErrorLogger
            if ($LastExitCode -ne 0) {
                    Write-Host "It failed, send a mail"
            }
    }

如果我通过这样的属性如下,它正在考虑中。

"/p:AllComponents=List.txt" 

为什么直接应用时不会考虑命令行参数?

我可以将命令行值存储在某个变量中并传递但是有没有其他机制可以直接传递它?

1 个答案:

答案 0 :(得分:3)

$ args [0]未在字符串内扩展,您需要将其括在子表达式表示法中:

... "/p:AllComponents=$($args[0])"

要避免使用此语法,请将参数分配给变量并将变量嵌入字符串中:

$argsZero= $args[0]
... "/p:AllComponents=$argsZero"

有关详细信息,请在控制台中键入以下内容:

Get-Help about_Quoting_Rules