O que há com esta linha de comando do PowerShell entre aspas / escapadas?
Eu obviamente não sei o que estou fazendo.
Finalmente consegui que este comando do PowerShell funcionasse. Mas não consigo descobrir por que funciona.
Minha preocupação é com os caracteres "" finais:
&"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""
Por que preciso de aspas duplas?
Meu IDE (PowerGUI) diz que a linha não foi finalizada corretamente, mas é a única maneira de executar o comando conforme desejado.
O que é que eu - e o IDE - não sabemos sobre citações no PowerShell?
Um pouco de saída de ecos:
Se eu correr:
echoargs -postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
Eu recebo:
Arg 0 is <-postSync=runCommand=powershell -NoLogo -NoProfile -Command \remotetasks.ps1 Deploy>
Se eu executar sem aspas duplas, recebo:
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>
Outra coisa a notar é que o comando acima funciona apenas se usar = em vez de:
no último argumento.
Isso não vai funcionar:
-postSync:runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
Eu tentei a solução de matriz como esta:
$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
Ainda obtenho o mesmo erro:
Erro: argumento não reconhecido '"-postSyncOnSuccess: runCommand = powershell -Command c: \ temp \ kslog \ remotetasks.ps1 Deploy"'. Todos os argumentos devem começar com "-".
Estou fazendo alguma coisa nova de errado aqui?