为什么Get-Service找不到PowerShell的服务

时间:2014-07-25 14:44:39

标签: powershell windows-services

我遇到PowerShell脚本问题。

我编写了一个脚本来搜索具有特定名称的Windows服务,它会停止或启动此服务。

当我在服务器上运行它时,它可以使用我知道可以访问服务控制台的服务帐户登录。但是,当它从我的构建服务器运行时,脚本不再能够找到服务。我尝试给运行脚本的服务帐户提供与其他服务帐户相同的权限,但这似乎不起作用。

[System.ServiceProcess.ServiceController]$service = Get-Service -Name $ServiceName -ComputerName $Remoteserver -ErrorAction SilentlyContinue

这是不再能够找到服务的行。我究竟做错了什么。有没有办法模仿可以找到服务的用户?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用 -Credential 参数提供服务帐户的凭据。但是,由于您暗示习惯使用远程运行脚本且不再使用该脚本的帐户,我认为更可能的罪魁祸首是 $ ServiceName 仅用于匹配目标计算机上的一个服务,现在有另一个名称与该字符串匹配的服务。如果多个服务与 -Name 参数匹配,则 Get-Service 会返回ServiceController对象的数组

尝试在没有ErrorAction -SilentlyContinue的情况下运行它。如果您收到以下错误消息,那就是发生了什么:

  

无法将“System.Object []”类型的“System.Object []”值转换为“System.ServiceProcess.ServiceController”类型。

如果您收到其他错误消息,请在问题中添加完整的错误消息。