为什么有些服务器执行“Get-Service”时会失败?

为什么有些服务器执行“Get-Service”时会失败?

我有几个服务器通过 VPN 连接到我的主机服务器。所有服务器都运行 Windows 7。我为每个服务器循环运行Get-Service -ComputerName $server -Name Spooler。由于某种原因,其中一些服务器成功返回服务,而另一些服务器没有返回Get-Service : Cannot find any service with service name 'Spooler'。我 100% 知道它们都有Spooler服务。

可能是服务器上的某些配置不同,导致无法返回服务。有人能建议我应该检查什么吗?

答案1

可能的原因是您没有足够的权限来查询远程计算机上的服务。请尝试不指定参数-Name,例如:

get-service -ComputerName TEST-CLIENT

其中 TEST-CLIENT 是您的服务器名称。看看您是否会收到更好的错误消息,例如:

get-service : Cannot open Service Control Manager on computer 'TEST-CLIENT'. This operation might require other privileges.

如果这是您的问题,您可以尝试授予远程登录和/或管理员访问权限,以访问远程计算机上的您的帐户。如果没有更多有关您的设置的详细信息,我无法提供更准确的解决方案。

答案2

除了权限问题之外,我认为下一个最可能的原因是您的 $server 变量的类型不正确。

查看 Get-Service 的帮助文件。我们可以看到 -ComputerName 仅接受字符串值。

    PS C:\Temp> Get-Help Get-Service -Parameter Computername

    -ComputerName **<String[]>**
Gets the services running on the specified computers. The default is the local computer.

Type the NetBIOS name, an IP address, or a fully qualified domain name (FQDN) of a remote computer. To specify the local computer, type the computer name, a dot (.), or localhost.

This parameter does not rely on Windows PowerShell remoting. You can use the ComputerName parameter of Get-Service even if your computer is not configured to run remote commands.

Required?                    false
Position?                    named
Default value                None
Accept pipeline input?       True (ByPropertyName)
Accept wildcard characters?  false

如果您使用 Get-ADComputer 设置 $server 变量,则该变量可能包含对象类型“Microsoft.ActiveDirectory.Management.ADComputer”

    PS C:\Temp> Get-ADComputer -Identity AE-HTPC | Get-Member
       TypeName: Microsoft.ActiveDirectory.Management.ADComputer

如果您抓住对象并将内容扩展为字符串,那么您将拥有一个 Get-Service 可以理解的变量。

    PS C:\Temp> Get-ADComputer -Identity AE-HTPC | Select-Object -
    ExpandProperty Name | Get-Member
       TypeName: System.String

... ...

结果复制...

    *PS C:\Temp> $server = Get-ADComputer -Identity AE-HTPC

    PS C:\Temp> Get-Service -ComputerName $server
    Get-Service : Cannot open Service Control Manager on computer 'CN=AE-
    HTPC,OU=HTPC,OU=Workstations,OU=All Clients,DC=ae,DC=kingdom,DC=com'.         
    This operation might require other privileges.
    At line:1 char:1
    + Get-Service -ComputerName $server
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Get-Service], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetServiceCommand

    PS C:\Temp> $server = Get-ADComputer -Identity AE-HTPC | Select-Object -ExpandProperty name

    PS C:\Temp> Get-Service -ComputerName $server
    Status   Name               DisplayName                           
    ------   ----               -----------                           
    Stopped  AdobeFlashPlaye... Adobe Flash Player Update Service     
    Stopped  AJRouter           AllJoyn Router Service*   

我希望这个答案不是太详细。这是我的第一个答案。如果它有帮助,请告诉我。

相关内容