3

作为我们自定义安装程序过程的一部分,我正在测试 msdeploy 以运行远程命令,但无论我如何配置它,我都无法让它允许我与普通用户一起使用 runCommand。

我正在使用的电话是(为清楚起见包装):

"C:\program Files\IIS\Microsoft Web Deploy\msdeploy.exe" 
    -verb:sync 
    -source:runCommand="testcommand.bat" 
    -dest:auto,wmsvc="https://server:8172/msdeploy.axd?site=Default Web Site",authType=basic,userName=server\username,password=xxxxxx 
    -allowUntrusted

该用户是服务器上的本地用户,并且已添加到“默认网站”的“IIS 管理器权限”中。testcommand.bat 只是一个包含“dir”的普通批处理文件。

我已经在管理服务委派下设置了 runCommand 提供程序(操作 =“*”,路径类型 =“路径前缀”,路径 =“{userScope}”,身份类型 =“特定用户”)

如果我将用户添加到本地管理员组,它工作正常。

由于已启用某些日志记录,我在事件日志中得到以下信息:

Tracing deployment agent exception. Request ID '97beb70b-33da-4445-b3be-d3cf3e6db8b7'. 
Request Timestamp: '08/31/2012 18:05:25'. 
Error Details:
    Microsoft.Web.Deployment.DeploymentUnauthorizedAccessException: Attempted to perform an unauthorized operation. runCommand http://go.microsoft.com/fwlink/?LinkId=178034
    at Microsoft.Web.Deployment.DelegationHelper.ImpersonateForOperation(String deploymentAction, String deploymentProvider, String deploymentPath, DelegationContextCache cache)
    at Microsoft.Web.Deployment.DelegationHelper.ImpersonateForOperation(String deploymentAction, DeploymentObject deploymentObject)/>
    at Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData)

我已经尝试过http://technet.microsoft.com/en-us/library/ee619740(WS.10).aspx中的两个基于权限的修复程序,但它们没有任何区别。

真的很感激任何建议——我差点把头发扯掉了!

4

1 回答 1

7

在同一件事上花了两天时间。如果您启用“Web 管理服务失败请求跟踪”,您将看到如下消息:

Uri="/msdeploy.axd", eventData="未授权。详细信息:未找到可以授权用户 'WebDeploy'、提供程序 'runCommand'、操作 'Read'、路径 'echo HI!' 的规则。"

如您所见,msdeploy 使用命令作为匹配规则的路径,因此您只需Path = "{userScope}"在委派规则中替换为Path = "testcommand.bat"

不确定,为什么在网络上的任何文章中都没有指定,也许这是 WebDeployV3 的新内容。

于 2012-09-02T07:49:32.147 回答