从TFS构建错误运行的PowerShell远程重新启动服务

时间:2017-06-01 10:44:48

标签: powershell tfs

我有一个TFS构建定义包含PowerShell脚本构建步骤。我想在远程计算机(DEVWS45PC)上运行以下命令,该计算机应该重新启动名为StartSeleniumGridHub的服务:

winrm s winrm/config/client '@{TrustedHosts="DEVWS45PC"}'

Restart-Service -InputObject $(Get-Service -Computer DEVWS45PC -Name StartSeleniumGridHub)

这给了我这个错误:

##[error]Get-Service : Cannot find any service with service name 'StartSeleniumGridHub'.
At E:\builds_2017\killBrowsersOnAllNodesAndRestartHub.ps1:43 
char:36
+     Restart-Service -InputObject $(Get-Service -Computer DEVWS45PC -Name StartSe ...
+                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (StartSeleniumGridHub:String) [Get-Service], ServiceCommandException
    + FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Restart-Service : Cannot validate argument on parameter 'InputObject'. The argument is null or empty. Provide an 
argument that is not null or empty, and then try the command again.
At E:\builds_2017\killBrowsersOnAllNodesAndRestartHub.ps1:43 
char:34
+     Restart-Service -InputObject $(Get-Service -Computer DEVWS45PC -Name StartSe ...
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Restart-Service], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.RestartServiceCommand

我可以在任何计算机上运行此脚本而不会出现任何问题。请注意' DEVWS45PC'在TFS构建代理计算机上真正设置为可信主机,因此不是问题。

我不知道问题是什么。也许认证问题?

1 个答案:

答案 0 :(得分:0)

您可以使用构建服务帐户手动RDP到远程计算机DEVWS45PC并运行powershell脚本。

很可能缺少您的构建服务帐户的权限(由于找不到该服务)。建议您将服务帐户添加到远程计算机DEVWS45PC上的本地管理员组,然后重试。

还要确保在构建定义中使用PowerShell on Target Machines任务而不是powershell任务。