2011-12-26 1 views
1

Я пытаюсь передать свойство через параметр командной строки ($ args [0]) следующим образом, используя Powershell, но это не рассматривается.Свойство Msbuild не рассматривается при передаче в качестве параметра командной строки через 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" 

Почему аргументы командной строки не рассматриваются при непосредственном применении?

Я могу сохранить значение командной строки в некоторой переменной и передать, но есть ли какой-либо другой механизм для передачи его напрямую?

ответ

3

$ арг [0] не расширены внутри строки, вы должны заключить его в подвыражении нотации:

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

Чтобы избежать этого синтаксиса, присвоить аргумент переменной и вставлять переменную строка:

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

Для получения дополнительной информации, введите следующую команду в консоли:

Get-Help about_Quoting_Rules 
+0

спасибо Леви. Оно работает – Samselvaprabu

 Смежные вопросы

  • Нет связанных вопросов^_^