Я, очевидно, не знаю, что делаю.Что происходит с этой командной строкой PowerShell, цитирующей/экранирующей?
У меня наконец-то появилась команда PowerShell. Но я не могу понять, почему это работает.
Мое беспокойство является окончательным «» символы:
&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" `
-verb:sync `
-source:contentPath="$build_directory\deploy" `
-dest:contentPath="$server_temp_directory,computerName=$server,username=$server_username,password=$server_password" `
-verbose `
-postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
Почему мне нужно двойные двойные кавычки?
В моей IDE (PowerGUI) говорится, что строка не закончена правильно, но это единственный способ заставить команду запускаться по мере необходимости.
Что случилось, что я - и IDE - не знаю о qouting в PowerShell?
Немного выход из echoargs:
Если я бегу:
echoargs -postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
я получаю:
Arg 0 is <-postSync=runCommand=powershell -NoLogo -NoProfile -Command \remotetasks.ps1 Deploy>
Если я бегу без двойных двойных кавычках, Я получаю:
Arg 0 is <-postSync=runCommand=powershell>
Arg 1 is <-NoLogo>
Arg 2 is <-NoProfile>
Arg 3 is <-Command>
Arg 4 is <\remotetasks.ps1>
Arg 5 is <Deploy>
Еще одна вещь, которую следует заметить, заключается в том, что приведенная выше команда работает только в том случае, если она использует = вместо: в последнем аргументе.
Это не будет работать:
-postSync:runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
EDIT
Теперь я попробовал решение массива, как это:
$arguments = @("-verb:sync",
"-source:contentPath=$build_directory\deploy",
"-dest:contentPath=$server_temp_directory,computerName=$server,username=$server_username,password=$server_password",
"-verbose",
"-postSyncOnSuccess:runCommand=powershell -Command $server_temp_directory\remotetasks.ps1 Deploy")
&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" $arguments
Я все еще получаю ту же ошибку:
Ошибка: непризнанный аргумент '"-postSyncOnSucces s: runCommand = powershell -Command c: \ temp \ kslog \ remotetasks.ps1 Развернуть «'. Все аргументы должны начинаться с «-».
Я делаю что-то новое здесь неправильно?
Благодарим за ответ! В этот уик-энд я прочь от кода, но я попробую ваши предложения, когда вернусь в понедельник. Вы правы, что это технически не является ответом на то, почему работают двойные двойные qoutes ... но если это ошибка, а не по дизайну, то, возможно, не стоит больше углубляться в понимание. Я скоро вернусь. – asgerhallas
So. Я пробовал всевозможные комбинации использования массива для параметров. Ничто не работает. У вас есть идея, почему? – asgerhallas
Я отредактировал вопрос с моей новой попыткой ... – asgerhallas