Cuando PowerShell ve un comando que comienza con una cadena, sólo evalúa la cadena, es decir, típicamente la repite en la pantalla, por ejemplo:
PS> "Hello World"
Hello World
Si quieres que PowerShell interprete la cadena como un nombre de comando entonces usa el operador de llamadas (&) así:
PS> & 'C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe'
Después de eso, probablemente sólo necesites citar los pares de parámetros/grandes que contienen espacios y/o caracteres de cita. Cuando invoca un exe como este con argumentos complejos de línea de comandos suele ser muy útil tener una herramienta que le muestre cómo PowerShell envía los argumentos al exe. El Extensiones de la comunidad de PowerShell tiene esa herramienta. Se llama ecoargs. Sólo tienes que reemplazar el exe con ecoargs - dejando todos los argumentos en su lugar y te mostrará cómo el exe recibirá los args, por ejemplo:
PS> echoargs -verb:sync -source:dbfullsql="Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;" -dest:dbfullsql="Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass
Arg 0 is <-verb:sync>
Arg 1 is <-source:dbfullsql=Data>
Arg 2 is <Source=mysource;Integrated>
Arg 3 is <Security=false;User>
Arg 4 is <ID=sa;Pwd=sapass!;Database=mydb;>
Arg 5 is <-dest:dbfullsql=Data>
Arg 6 is <Source=.\mydestsource;Integrated>
Arg 7 is <Security=false;User>
Arg 8 is <ID=sa;Pwd=sapass!;Database=mydb; computername=10.10.10.10 username=administrator password=adminpass>
Usando las ecoargs puedes experimentar hasta que lo hagas bien, por ejemplo:
PS> echoargs -verb:sync "-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;"
Arg 0 is <-verb:sync>
Arg 1 is <-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;>
Resulta que antes me esforzaba mucho por mantener las comillas dobles alrededor de la cadena de conexión. Aparentemente eso no es necesario porque incluso cmd.exe las quitará.
Por cierto, me quito el sombrero ante el equipo de PowerShell. Fueron de gran ayuda al mostrarme el conjuro específico de las comillas simples y dobles para obtener el resultado deseado - si necesitabas mantener las comillas dobles internas en su lugar. :-) También se dan cuenta de que es un área de dolor, pero están impulsados por el número de personas que se ven afectadas por un tema en particular. Si esta es un área de dolor para ti, entonces por favor vota esto Presentación de errores de PowerShell .
Para más información sobre cómo analiza PowerShell, mira mi Serie de blogs de Effective PowerShell - específicamente punto 10 - "Entendiendo los modos de análisis de PowerShell"
ACTUALIZACIÓN 4/4/2012: Esta situación se hace mucho más fácil de manejar en PowerShell V3. Vea esto entrada en el blog para más detalles .