Windows services 使用MsDeploy使用preSync命令部署Windows服务

Windows services 使用MsDeploy使用preSync命令部署Windows服务,windows-services,msdeploy,web-deployment,Windows Services,Msdeploy,Web Deployment,是否有人使用MsDeploy通过preSync runc命令成功部署windows服务?我已经使用管理员帐户让它工作,但我一辈子都不能让它在标准用户帐户上工作。不幸的是,我不能使用集成身份验证(我们正在部署到一个外部框中),而在构建服务器的日志中,管理员密码以明文形式存在的想法也让我感觉不太舒服。就这一点而言,任何用户凭据都没有——但我看不到解决这一问题的方法 我使用的命令是: "tools/deploy/msdeploy.exe" -verb:sync -preSync:runCommand

是否有人使用MsDeploy通过preSync runc命令成功部署windows服务?我已经使用管理员帐户让它工作,但我一辈子都不能让它在标准用户帐户上工作。不幸的是,我不能使用集成身份验证(我们正在部署到一个外部框中),而在构建服务器的日志中,管理员密码以明文形式存在的想法也让我感觉不太舒服。就这一点而言,任何用户凭据都没有——但我看不到解决这一问题的方法

我使用的命令是:

"tools/deploy/msdeploy.exe" -verb:sync 
-preSync:runCommand="tools\Deploy\PreSyncCommand.cmd",waitInterval=30000 
-source:dirPath="C:\BuiltSourcePath" 
-dest:computerName=https://server:8172/msdeploy.axd?site=dummysitename,userName=service-deploy,password=service-deploy-pass,authType=basic,dirPath="C:\DeployPath\"
-allowUntrusted
在IIS中为虚拟站点设置了规则,以允许对服务部署windows帐户进行身份验证,并具有contentPath和runCommand权限(目前设置为C:\s,因为还不完全清楚是否需要将其设置为MsDeploy流传输到的临时路径或部署路径?)。服务部署帐户还完全控制目标目录。我得到以下回复:

Performing '-preSync'...
Info: Using ID '7a7d34a1-b5d8-49f1-960a-31c9cf825868' for connections to the remote server.
Info: Using ID '4d0b910c-aca4-4640-84bd-3597d22d99d1' for connections to the remote server.
Info: Updating runCommand (C:\TeamCity\buildAgent\work\aec989676b349656\tools\De
ploy\PreSyncCommand.cmd).
Warning: Access is denied.
Warning: The process 'C:\Windows\system32\cmd.exe' (command line '/c "C:\Windows
\ServiceProfiles\LocalService\AppData\Local\Temp\giz2t0kb.0ay.cmd"') exited with
 code '0x1'.
即使PreSyncCommand.cmd的内容为空,也会发生这种情况。如果我传入管理员凭据,同样的命令也可以正常运行。我曾尝试使用ProcessMonitor检查是否有任何内容被拒绝访问,但看不到任何内容-因此我猜这仍然是一个MsDeploy身份验证规则。WmSvc.log中没有任何内容(调试已启用),事件日志中也没有任何内容


有什么想法吗?谢谢

由于您正在通过WmSvc使用Web Deploy,因此需要在目标服务器上设置适当的委派规则:

在IIS管理器中,打开“管理服务委派”功能。添加至少指定
runCommand
提供程序的新规则。在“运行方式”部分中,选择“特定用户”,并为该计算机上的本地管理员帐户提供凭据。这是执行runCommand脚本的标识。最后,需要将为目标dirPath提供程序指定的用户添加到委派规则中

这允许您使用非特权帐户调用部署,并在目标计算机上以管理凭据执行部署


有关IIS功能委派的更多信息:

谢谢!这是我丢失的run-as元素。现在它运行得很好。我已经发布了一篇关于如何做到这一点的博客文章:上面由James Crowley发布的博客文章已经将它移动到了现在