【问题标题】:Remotely starting and stopping a service on a W2008 server远程启动和停止 W2008 服务器上的服务
【发布时间】:2010-09-06 17:14:40
【问题描述】:

我在从我的 msbuild 脚本启动和停止远程服务器上的服务时遇到了很多麻烦。

SC.EXE 和 ServiceController MSBuild 任务不提供允许用户名/密码的开关,因此它们不会进行身份验证,所以我使用的是来自 www.intelliadmin.com 的 RemoteService.exe

-使用 \xx.xx.xx.xxx 进行身份验证 - 认证完成 -停止服务 -错误:访问被拒绝

我指定的用户帐户详细信息是针对服务器上的本地管理员的,所以怎么了?!我要扯头发了!

更新:

好的,这里有一点背景。我在办公室有一台 XP 机器运行 CI 服务器。构建脚本将 VPN 连接到数据中心,在那里我有一台 Server 2008 机器。他们都不在域中。

【问题讨论】:

    标签: service windows-server-2008


    【解决方案1】:

    如果我正确理解您的情况,它可能有助于使用您的远程计算机上的管理员域帐户运行脚本(或者更好:有权启动和停止服务)。

    【讨论】:

      【解决方案2】:

      快速跟进问题 - 您可以使用 MSBuild 脚本中的“runas”命令吗?如果是这样,您不能简单地使用 runas /user:dsfsdf /password:dfdf sc.exe ...(或类似的 - 我没有研究过命令行选项)来模拟另一个用户吗?

      【讨论】:

        【解决方案3】:

        通常,您可以在运行 SC.EXE 等命令之前连接到机器上的 IPC$“伪共享”以帮助建立凭据。使用如下命令:

        C:\> net use \\xx.xx.xx.xx\ipc$ * /user:username
        

        * 告诉它提示您输入密码。

        【讨论】:

        • 似乎可以以非交互方式使用伪共享:net use \[server] /user:[username] [password]
        • 是的,您可以显式添加密码(而不是 * 用于提示),但是您已将纯文本密码嵌入到计算机上的文件中。买者自负! :)
        • 或者你只是将它作为一个 MSBUILD 参数传入:)
        【解决方案4】:

        我已禁用 UAC,现在它似乎可以工作了。

        【讨论】: