流水线变量增量
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
我想
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