Powershell 管道内变量增量

Powershell 管道内变量增量,powershell,Powershell,我想 a)显示给定服务的所有结果(如果找到) b)如果根本找不到服务,则显示相应的错误 下面的代码将实现a),如何以最整洁的方式实现b)。我是否可以扩展管道,使其连接到类似|设置变量$serviceCount++,然后检查该变量,如果该变量为零,则显示一条消息 foreach($service in $services) { Get-Service | where {$_.Name -eq $service} } Get-Servicecmdlet的-Name参数接

我想

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

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

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

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

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

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