代码之家  ›  专栏  ›  技术社区  ›  Wim

从生成服务器远程和自动管理IIS 7-权限问题

  •  1
  • Wim  · 技术社区  · 15 年前

    下面是场景:

    • Win2003生成服务器(CCNET)
    • IIS7目标部署服务器

    执行此操作(创建vdir、设置apppool属性)的各种msbuild任务(sdc.tasks、msbuild community、msbuild extension pack)至少不适合以下一个或多个原因:

    • 不支持IIS 7。
    • 无法通过域用户名/密码执行操作。
    • Microsoft.Web.Management.dll在生成服务器上不可用。
    • “拒绝访问”错误。

    在IIS 6上创建vdir没有问题-尽管我们实际上正在向iisvdir.vbs进行解压,因为使用上面描述的任何msbuild任务在执行操作时似乎不支持域用户名/密码验证,或者只会抛出基本的“拒绝访问”消息(尽管满足了对IIS 6的适当权限)abase)

    另外,请记住,如果不指定特定的域用户/pw,只要当前的身份验证上下文具有正确的权限,那么各种方法就可以在IIS 7上完美地工作,但出于明显的原因,我们不希望所有ccnet构建都在该上下文中运行。

    我甚至使用psexec.exe远程在框中运行appcmd.exe,如果当前安全上下文具有适当的权限,这也可以正常工作,但是一旦在psexec上指定用户名/密码,就会收到一条错误消息,说明“由于权限不足,无法读取配置文件”。指定的用户是域帐户,并且是p2008服务器上本地管理员组的艺术。

    另外,我最终还是滚动了自己的runas msbuild任务,从exec任务继承并使用编程模拟。然后,我使用它来调用psexec,而不在psexec中指定用户名和密码,而是通过在shelling到psexec时模拟来调用,但我只是得到一个1的exitcode,没有任何详细信息。

    如你所见,我已经用尽了所有的选择,或者说我认为。

    如果您能从非iis7设备上的自动化流程(使用特定的非本地管理用户)想到其他任何事情,或者远程管理iis7,请告诉我。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Wim    15 年前

    正确的。在一点点混乱之后,看起来Windows2008用户帐户控制(UAC)正在阻碍这一进程。如果您使用的是内置管理员以外的任何其他管理员帐户,则UAC的管理员批准模式将启动。

    显然,在自动脚本(非交互模式)中,您将被拒绝访问,因为您没有在UAC对话框上单击“继续”的选项。

    唯一的选择是在组策略(gpedit.msc)中编辑本地计算机的安全选项,并将“以管理员批准模式运行管理员”从“启用”设置为“禁用”。

    重新启动,你就没事了。

    如果您可以在特定的管理员帐户上为管理员批准模式设置UAC异常,它实际上会更好、更安全。如果你在阅读,女士-把它放在功能列表上!