2012-10-04 15 views
6

Estoy tratando de ejecutar ProjectName.deply.cmd que MSBuild genera cuando se pasa el parámetro /p:DeployOnBuild=True. Uno de los argumentos "ComputerName" se pasará como https://WebServer01:8172/MSDeploy.axd?SiteName=MySiteName. Mi línea de comandos seríaCómo pasar el nombre del sitio en ProjectName.deploy.cmd

ProjectName.deploy.cmd /Y /M:https://WebServer01:8172/MSDeploy.axd?Site=MySiteName 
         -AllowUntrusted /U:DeployUserName /P:Password /A:Basic 

Devuelve

Error: Unrecognized argument 'MySiteName'. All arguments must begin with "-". 

el comando real que se ejecuta es

"C:\Program Files\IIS\Microsoft Web Deploy V3\\msdeploy.exe" 
    -source:package='Y:\ProjectName.zip' 
    -dest:auto,computerName='https://WebServer01:8172/MSDeploy.axd?Site',userName='DeployUserName',password='Password',authtype='Basic',includeAcls='False' 
    -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"Y:\ProjectName.SetParameters.xml" 
    MySiteName 
    -AllowUntrusted 

en cuenta que el argumento a/M https://WebServer01:8172/MSDeploy.axd?Site=MySiteName se divide en dos argumentos y por lo tanto creando computerName='https://WebServer01:8172/MSDeploy.axd?Site' yy argumento adicional MySiteName.

He pasado por Running a deployment package with quoted parameters fails in Visual Studio 2010 Service Pack 1 pero eso solo se ocupa de ArgMsDeployAdditionalFlags y no los argumentos, p. /M:ComputerName.

Cuando el nombre del sitio no se pasa, no puedo hacer la multa despliegue con un usuario que tenía derechos de administrador en el servidor, pero cuando se utiliza un DeployUserName usuario IIS estándar consigo 401

ProjectName.deploy.cmd /Y /M:https://WebServer01:8172/MSDeploy.axd 
         -AllowUntrusted /U:DeployUserName /P:Password /A:Basic 

el servidor devuelve 401

Error Code: ERROR_USER_UNAUTHORIZED 
More Information: Connected to the remote computer ("WebServer01") using the Web 
Management Service, but could not authorize. Make sure that you are using the 
correct user name and password, that the site you are connecting to exists, and 
that the credentials represent a user who has permissions to access the site. 
Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED. 

Error: The remote server returned an error: (401) Unauthorized. 

los permisos para ese usuario están bien como la publicación de VS2012 con MSDeploy perfil con ese usuario funciona bien. También puedo construir el comando msdeploy.exe y eso también funciona bien. Tengo que usar el ProjectName.deploy.cmd, ya que se está produciendo como parte de Team Build desde TFS2010.

Respuesta

7

¿Has probado citando el argumento?

ProjectName.deploy.cmd /Y "/M:https://WebServer01:8172/MSDeploy.axd?Site=MySiteName" 
        -AllowUntrusted /U:DeployUserName /P:Password /A:Basic 
+0

Eso fue un error tipográfico en la pregunta. Lo he arreglado El problema no es el argumento en sí. Es la forma = se maneja mediante el símbolo del sistema y luego se organiza en el script deploy.cmd para pasarlo posteriormente a msdeploy.exe. –

+0

@amit_g - Ver mi respuesta actualizada. –

+0

Estoy seguro de que intenté esto junto con otras variaciones para escapar de = pero ese día ninguno de ellos funcionó :(Hoy comencé con esto y funcionó en el primer intento. Hubo algunos otros problemas relacionados con la seguridad, pero esos fueron directos adelante. Con este funcionamiento no necesitaré privilegios de administrador para el usuario de implementación (que es lo que quería). Gracias @Richard por su ayuda. –

Cuestiones relacionadas