我在远程机器上有一个现有的 Windows 服务。
这是我需要做的:
- 停止该服务。
- 删除该服务。
- 将我的构建工件复制到该远程计算机上的指定目录。
- 重新创建该 Windows 服务。
- 启动 Windows 服务。
我的问题:
- 我的构建代理既不能停止也不能删除现有的 Windows 服务。
我不断收到以下错误:
[SC] OpenSCManager 失败 5:
访问被拒绝。
我在远程机器上有一个现有的 Windows 服务。
这是我需要做的:
我的问题:
我不断收到以下错误:
[SC] OpenSCManager 失败 5:
访问被拒绝。
首先,
sc STOP $(serviceName)
应该是一个红旗。
运行您的代理的服务帐户是否具有适当的权限 [执行此操作]?
但也应该问:
您希望针对哪台机器执行此操作?构建代理?
事实上,这是我的问题。当我第一次测试这个发布管道时,目标机器和构建代理恰好是同一台机器。
这是一个不幸的事故,因为并非所有版本都是如此。
解决方案:
这是对的:
sc \\$(serviceMachine) STOP $(serviceName)
@Daniel Mann是正确的:
有几种方法可以实现这一点,但我将描述一种我推荐使用 PowerShell 的方法:
选择内联脚本并粘贴下面的代码:
Get-Service -DisplayName "YOUR_SERVICE_NAME" | Stop-Service
重复步骤 1 并粘贴以下代码以重新创建并启动服务:
$params = @{
Name = "YOUR_SERVICE_NAME"
BinaryPathName = "C:\WINDOWS\System32\svchost.exe -k netsvcs"
DependsOn = "NetLogon"
DisplayName = "Test Service"
StartupType = "Manual"
Description = "This is a test service."
}
New-Service @params
您可以在Microsoft Docs阅读有关服务创建参数的更多信息: