我正在设置集成测试版本,我只是想尝试启动Windows服务。
我已经使用InvokeProcess命令来运行powershell脚本,它只执行以下操作
Start-Service ServiceName
当我运行构建过程时脚本失败但是当我在TFS外部执行相同的脚本时,它可以工作。我在TFS日志中收到以下错误
Start-Service:由于以下错误,无法启动服务'ServiceName(ServiceName)':无法打开ServiceName 计算机服务'。'。
然后我尝试更改启动服务的方式,并在InvokeProcess中使用参数“Start ServiceName”的SC.exe,并在TFS中获得Access Denied错误,如下所示: -
SC启动ServiceName。 [SC] StartService:OpenService FAILED 5: 访问被拒绝。
我正在使用网络服务帐户来运行构建。
经过一段时间的搜索,我得出的结论是,我必须使用提升的权限运行InvokeProcess,但我不知道如何在TFS中执行此操作。
非常感谢任何帮助。
答案 0 :(得分:2)
我们将构建代理作为自定义服务帐户运行,并在我们部署到的服务器上为该域帐户授予管理员访问权限。
答案 1 :(得分:0)
我已通过将网络服务帐户添加到管理员组来解决此问题。我可能不会使用此解决方案,因为将管理权限分配给网络服务帐户似乎是错误的,但我不知道如何在不将此帐户添加到管理员组的情况下将服务启动/停止权限分配给网络服务。
简而言之,我同意必须使用自定义服务帐户以适当的权限运行构建的答案。