流水线变量增量

In pipeline variable increment

我想

a) 如果找到,则显示给定服务的所有结果

b) 如果根本找不到任何服务,则显示相应的错误

下面的代码将实现 a),我如何以最整洁的方式实现 b)。我可以扩展管道,使其通过管道传输到类似 | 的内容吗?设置变量 $serviceCount++ 然后检查该变量,如果它为零则显示一条消息?

foreach($service in $services)
{        
    Get-Service | where {$_.Name -eq $service}  
}

Get-Service cmdlet 的 -Name 参数接受一个 String 数组,因此您可以简单地用以下代码替换您的循环:

Get-Service -Name $services

要检查返回了多少服务,您可以获取 Get-Service 调用的结果,将其转换为一个数组(如果它还不是一个数组),并将其存储在一个变量中:

$results = @(Get-Service -Name $services)

然后检查数组的长度:

if ($results.Length -eq 0)
{
    Write-Warning 'No services were found!'
}

请注意,对于传递给 -Name 参数的每个与已安装服务不对应的名称,都会引发错误。您可以使用 -ErrorAction 参数抑制这些错误:

Get-Service -Name $services -ErrorAction SilentlyContinue