PowerShell 5.1 Get-Service 计算机数组和服务名称数组

问题描述 投票:0回答:1

PowerShell 5.1

我注意到,当我将

Get-Service
与多台计算机和多个服务名称一起使用时,如果服务名称不在其中一台计算机中,即使它存在于列出的其他计算机中,执行也会失败。我试过以下方法:

get-service -ComputerName $computers -Name $serviceNames -ErrorAction Continue

我想列出指定计算机中指定的所有服务。某些服务可能在某些计算机上,但并非所有计算机上都存在所有服务。

powershell powershell-remoting
1个回答
0
投票

推荐的方法是不使用

Get-Service
进行远程处理,而是使用
Invoke-Command
。请注意,较新版本的 PowerShell 中的
Get-Service
不再支持远程处理。

$service = 'foo', 'bar', 'baz'
Invoke-Command -ComputerName $computers { Get-Service $using:service }

如果您受到没有启用 WinRM 的远程主机的限制/需要使用 DCOM 作为您的远程协议,您可以使用

Get-WmiObject
和构造过滤器,这样,它不是特别漂亮,但它不应该抛出当在其中一个远程主机中找不到服务:

$service = 'foo', 'bar', 'baz'
$filter = $service | ForEach-Object { "name='$_'" }
$filter = $filter -join ' OR '
Get-WmiObject win32_service -Filter $filter -ComputerName $computers
© www.soinside.com 2019 - 2024. All rights reserved.