我想
a)显示给定服务的所有结果(如果找到)
b)如果根本找不到任何服务,则显示相应的错误
以下代码将实现 a),如何以最整洁的方式实现 b)。我可以扩展管道,使其管道像 | Set-Variable $ serviceCount ++ 然后检查该变量,如果为零,则显示一条消息?
foreach($service in $services)
{
Get-Service | where {$_.Name -eq $service}
}
答案 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