2012-10-04 9 views
6

Próbuję uruchomić obiekt ProjectName.deply.cmd generowany przez MSBuild po przekazaniu parametru /p:DeployOnBuild=True. Jeden z argumentów "NazwaKomputera" ma zostać przekazany jako https://WebServer01:8172/MSDeploy.axd?SiteName=MySiteName. Moja linia poleceń byłobyJak przekazać nazwę witryny w ProjectName.deploy.cmd

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

Zwraca

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

rzeczywista komenda, która jest wykonywana jest

"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 

Należy zauważyć, że argument/M https://WebServer01:8172/MSDeploy.axd?Site=MySiteName jest podzielony na dwa argumenty, a co za tym idzie tworzenie computerName='https://WebServer01:8172/MSDeploy.axd?Site' i dodatkowego argumentu MySiteName.

Przeszedłem przez Running a deployment package with quoted parameters fails in Visual Studio 2010 Service Pack 1, ale to zajmuje się tylko ArgMsDeployAdditionalFlags, a nie argumentami, np. /M:ComputerName.

Gdy NazwaLokacji nie jest przekazywana, mogę zrobić grzywny wdrażania z użytkownikiem, który miał uprawnienia administratora na serwerze, ale kiedy jest używany standardowy DeployUserName użytkownik IIS otrzymuję 401

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

Serwer zwraca 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. 

uprawnień dla danego użytkownika są w porządku, jak publikuje od VS2012 z MSDeploy profilu przy użyciu tego użytkownika działa dobrze. Mogę również zbudować polecenie msdeploy.exe i to również działa dobrze. Muszę użyć ProjectName.deploy.cmd, ponieważ jest on produkowany jako część Team Build z .

Odpowiedz

7

Czy próbowałeś przytoczyć argument?

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

To był literówka w pytaniu. Naprawiłem to. Problem nie jest samym argumentem. Jest to sposób = jest obsługiwany przez wiersz polecenia, a następnie uporządkowany w skrypcie deploy.cmd i przekazywany dalej do msdeploy.exe. –

+0

@amit_g - Zobacz moją zaktualizowaną odpowiedź. –

+0

Jestem pewien, że spróbowałem tego razem z innymi wariacjami, aby uciec przed =, ale tego dnia żaden z nich nie zadziałał :(Dzisiaj zacząłem od tego i działało to w pierwszej próbie. Było kilka innych problemów związanych z bezpieczeństwem, ale te były proste Przy tym działaniu nie będę potrzebował uprawnień administratora dla użytkownika instalacji (tego właśnie chciałem) .Dziękuję @Richard za pomoc. –

Powiązane problemy