Хммм, подумайте, что вам нужно творить магию с побегами.
Любой вызов powershell, который я делаю из cmd, я пытаюсь сохранить формирование следующим образом -
"powershell.exe -command '& {. C: \ Temp \ Example.ps1 -param1 hello}'"
Ваша сложность связана с многострочной переменной cmd, которую вы пытаетесь создать, каждая строка по мере расширения переменной удаляет все применяемые вами escape-последовательности.
Я немного повозился с тобой, но потом подумал ... почему бы тебе просто не создать сценарий .ps1 со своим блоком сценариев, сохранить любые неприятные побеги и т. Д.
Итак, Invoke-Build.ps1 становится -
Param ($ TaskList, $ Config)
Модуль импорта .. \ tools \ psake \ psake.psm1
пытаться
{
invoke-psake -framework 4.0 -taskList $ TaskList -properties @ {config = $ Config}
}
ловить
{
, .. \ инструменты \ psake \ teamcity.ps1;
если ([строка] :: IsNullOrEmpty ($ ENV: TEAMCITY_VERSION))
{
TeamCity-ReportBuildStatus -status FAILURE -text $ _
}
еще
{
ОШИБКА записи-хоста: $ _ -ForegroundColor RED
}
выход $ Error.Count
}
наконец-то {remove-module psake}
Тогда вы можете просто поставить исходный текст сценария из cmd ......
@ echo OFF
SET COMMAND_TO_EXECUTE = Invoke-Build.ps1
Команда построения echo: "% COMMAND_TO_EXECUTE%"
IF% PROCESSOR_ARCHITECTURE% == x86 (
powershell -PSConsoleFile "% TFSPowerToolDir% tfshell.psc1" -Version "2.0" -NoProfile -ExecutionPolicy неограниченный -Command "& {.% COMMAND_TO_EXECUTE% -TaskList -Config}"
) ELSE (
C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ powershell.exe -PSConsoleFile "% TFSPowerToolDir% tfshell.psc1" -Version "2.0" -NoProfile -ExecutionPolicy неограниченный -Command "& {.% COMMAND_TO_EXECUTEConfis-%as-% «