Проблемы с Powershell и запуском сложной командной строки - PullRequest
0 голосов
/ 27 апреля 2010

Я пытался запустить следующую командную строку из имеющегося у нас скрипта сборки Powershell;но продолжайте сталкиваться с проблемами

& 'C:\Dev\Yadda\trunk\BuildScripts\U tilities\csmanage.exe' `
  /create-deployment `
  /name:yadddayaddyaddadev `
  /label:yadddayaddyaddadev `
  /package:https://yadddayaddyadda.blob.core.windows.net/mydeployments/20100426_202848_FamilyMoments.cspkg `
  /config:C:\Dev\WalmartOne\trunk\yadddayaddyadda.CloudService\bin\Debug\ServiceConfiguration.cscfg `
  /slot:Staging `
  /hosted-service:yadddayaddyadda-dev"

Примечание: пробел в "Утилитах" является намеренным;пытаясь выявить ошибку, связанную с пробелами в пути к исполняемому файлу.Уверяю вас, путь существует с пробелом в нем на моей машине.

Какой лучший способ вызвать эту командную строку из Powershell?Я пробовал Invoke-Expression, Diagnostic.Process :: Start, &;каждый метод выдвигает какой-то другой тип ошибки;обычно, чтобы он мог найти исполняемый файл.Любой конструктивный вклад приветствуется.

Спасибо.

1 Ответ

2 голосов
/ 27 апреля 2010

Как только я удалил завершающие пробелы после символов `продолжения строки 'и избавился от самой последней двойной кавычки, мне кажется, это работает (в PowerShell 2.0). Следите за пробелами после символов продолжения строки - PowerShell действительно не нравится. Обратите внимание, что у меня нет вашей утилиты, поэтому я использую утилиту отладки из PowerShell Community Extensions , которая просто выводит аргументы на экран:

PS> C:\Windows\system32>echoargs.exe `
  /create-deployment `
  /name:yadddayaddyaddadev `
  /label:yadddayaddyaddadev `
  /package:https://yadddayaddyadda.blob.core.windows.net/mydeployments/20100426_202848_FamilyMoments.cspkg `
  /config:C:\Dev\WalmartOne\trunk\yadddayaddyadda.CloudService\bin\Debug\ServiceConfiguration.cscfg `
  /slot:Staging `
  /hosted-service:yadddayaddyadda-dev
Arg 0 is </create-deployment>
Arg 1 is </name:yadddayaddyaddadev>
Arg 2 is </label:yadddayaddyaddadev>
Arg 3 is </package:https://yadddayaddyadda.blob.core.windows.net/mydeployments/20100426_202848_FamilyMoments.cspkg>
Arg 4 is </config:C:\Dev\WalmartOne\trunk\yadddayaddyadda.CloudService\bin\Debug\ServiceConfiguration.cscfg>
Arg 5 is </slot:Staging>
Arg 6 is </hosted-service:yadddayaddyadda-dev>

Обратите внимание, что пробел в 'U tilies' не должен быть проблемой. Вы указали путь и правильно используете оператор вызова &. Если вы удалите все свои параметры, вызывается ли exe (даже если он только выплевывает использование)? Если это так, то я подозреваю проблему с передачей аргументов, что является довольно распространенной проблемой при вызове exe-файлов из PowerShell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...