在管道变量增量中

时间:2015-01-08 16:15:55

标签: powershell

我想

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

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

以下代码将实现 a),如何以最整洁的方式实现 b)。我可以扩展管道,使其管道像 | Set-Variable $ serviceCount ++ 然后检查该变量,如果为零,则显示一条消息?

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

1 个答案:

答案 0 :(得分:4)

-Name cmdlet的Get-Service参数接受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