¿Qué pasa con esta línea de comando de PowerShell citando / escapando?

Obviamente no sé lo que estoy haciendo.

Finalmente tengo este comando de PowerShell para trabajar. Pero no puedo entender por qué funciona.

Mi preocupación son los "" caracteres finales:

    &"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 comillas dobles?

Mi IDE (PowerGUI) dice que la línea no finalizó correctamente, pero es la única forma en que puedo hacer que el comando se ejecute como se desea.

¿Qué es lo que yo, y el IDE, no sé acerca de las citas en PowerShell?

Un pequeño resultado de echoargs:

Si corro:

echoargs -postSync=runCommand="powershell -NoLogo -NoProfile -Command $server_temp_directory\remotetasks.ps1 Deploy""

Yo obtengo:

Arg 0 is <-postSync=runCommand=powershell -NoLogo -NoProfile -Command \remotetasks.ps1 Deploy>

Si corro sin las 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 a tener en cuenta 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""

He probado la solución de 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

Todavía recibo el mismo error:

Error: argumento no reconocido '"-postSyncOnSuccess: runCommand = powershell -Command c: \ temp \ kslog \ remotetasks.ps1 Deploy"'. Todos los argumentos deben comenzar con "-".

¿Estoy haciendo algo nuevo mal aquí?

Respuestas a la pregunta(3)

Su respuesta a la pregunta