返回结果的PowerShell Get-Service很慢

时间:2017-08-30 13:59:35

标签: powershell

我已经尝试了几种收集服务数据的方法,但似乎无法满足我的所有需求。 Get-Service工作正常但在我输入几个Where-Object属性时速度很慢。 Get-CimInstance要快得多,但我无法弄清楚如何排除服务。有什么想法吗?

到目前为止,这是我的代码尝试。在我添加Where-Object之前,这个很快。然后,如果我这样做,则需要3倍的时间:

Get-Service -DisplayName * -ComputerName $Name -Exclude $ExcludedServices | Where-Object { $_.status -eq 'Running' -or $_.StartType -eq 'Automatic' }

这个工作速度要快得多,但我不知道如何在需要时排除服务列表:

Get-CimInstance -ClassName Win32_Service -ComputerName $Name | Where-Object { $_.state -eq 'Running' -or $_.StartMode -eq 'Auto' }

1 个答案:

答案 0 :(得分:3)

  

如果需要,我不知道如何排除服务列表

Get-CimInstance允许您对查询施加WQL WHERE clause约束:

Get-CimInstance Win32_Service -Filter 'Name != "excludedSvc"'

您还可以根据查询中的StateStartMode属性限制项目,这样远程计算机就不必发回所有服务:

Get-CimInstance Win32_Service -Filter 'Name != "excludedSvc" AND State = "Running" AND StartMode = "Auto"'