2011-12-26 55 views
1

我想通過命令行參數($ args [0])傳遞屬性如下使用Powershell,但它沒有被考慮。通過powershell作爲命令行參數傳遞時不考慮Msbuild屬性

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" 

爲什麼直接應用命令行參數時沒有考慮它?

我可以將命令行值存儲在某個變量中並傳遞,但有沒有其他機制可以直接傳遞它?

回答

3

的$ args [0]是不是裏面麪條膨脹,你需要把它們放在一個子表達式的符號:

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

爲了避免這種情況的語法,分配參數變量並嵌入在變量字符串:

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

欲瞭解更多信息,請在您的控制檯以下:

Get-Help about_Quoting_Rules 
+0

謝謝徵收。有用 – Samselvaprabu 2011-12-27 05:26:39