Obviamente no sé lo que estoy haciendo.¿Qué pasa con esta línea de comando de PowerShell que cotiza/escapa?
Finalmente he conseguido que este comando de PowerShell funcione. Pero no puedo entender por qué funciona.
Mi preocupación es el final "" caracteres:
&"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 qué necesito dobles comillas dobles?
Mi IDE (PowerGUI) dice que la línea no finalizó correctamente, pero es la única forma en que puedo ejecutar el comando como lo desee.
¿Qué es lo que yo, y el IDE, no sé sobre el qouting en PowerShell?
Una pequeña salida de echoargs:
Si me quedo:
echoargs -postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
me sale:
Arg 0 is <-postSync=runCommand=powershell -NoLogo -NoProfile -Command \remotetasks.ps1 Deploy>
Si me quedo sin las dobles comillas dobles, Obtengo:
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>
Otra cosa que hay que notar es que el comando anterior solo funciona si usa = en lugar de: en el último argumento.
Esto no funcionará:
-postSync:runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""
EDITAR
Ahora he intentado la solución matriz de esta manera:
$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
sigo teniendo el mismo error:
Error: argumento no reconocido '"-postSyncOnSucces s: runCommand = powershell -Command c: \ temp \ kslog \ remotetasks.ps1 Implementar "'. Todos los argumentos deben comenzar con "-".
¿Estoy haciendo algo nuevo mal aquí?
¡Gracias por la respuesta! Estoy lejos del código este fin de semana, pero probaré tus sugerencias cuando regrese el lunes. Tienes razón, que técnicamente esto no es una respuesta a por qué funciona el doble double-qoutes ... pero si es un error, y no por diseño, entonces no valdría la pena obtener una comprensión más profunda de todos modos. Regresaré en breve. – asgerhallas
So. He intentado todo tipo de combinaciones de usar una matriz para los parámetros. Nada parece funcionar. ¿Tienes una idea de por qué? – asgerhallas
He editado la pregunta con mi nuevo intento ... – asgerhallas