【问题标题】:Why would Get-Service not find the service with powershell为什么 Get-Service 找不到带有 powershell 的服务
【发布时间】:2014-07-25 14:44:39
【问题描述】:

我在使用 powershell 脚本时遇到问题。

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

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

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

这是无法再找到服务的线路。我究竟做错了什么。有没有办法冒充可以找到服务的用户?任何帮助将不胜感激。

【问题讨论】:

  • 听起来像是一个基本权限问题,在构建服务器上运行 get-service 命令的帐户是否有权获取服务帐户?当您使用在远程系统上具有管理员权限的域帐户运行它时,手动执行是否有效?要模拟用户,您可以打开一个新的 cmd 窗口,并将 runas 作为域服务帐户。
  • 您可以返回并接受一些关于您旧问题的答案。
  • 我在使用我们的构建服务器远程停止服务时遇到了同样的问题。当我将用于执行构建服务器任务的服务帐户添加到托管我的服务的服务器的本地管理员组中时,问题就解决了。

标签: powershell windows-services


【解决方案1】:

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

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

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

如果您收到不同的错误消息,请将完整的错误消息添加到问题中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2019-12-15
    • 2013-03-04
    • 1970-01-01
    • 2017-10-23
    • 2017-03-25
    • 2015-09-24
    相关资源
    最近更新 更多