简化PS命令:Get-Service | 其中{($ _.状态-eq"已停止")-OR($ _.状态-eq"正在运行")}

icn*_*vad 5 powershell

在-eq命令中包含多个值的语法是什么:

这有效,但我认为有一种方法可以节省一些打字:

Get-Service | where {($_.Status -eq "Stopped") -OR ($_.Status -eq "Running")}
Run Code Online (Sandbox Code Playgroud)

认为代码应该看起来像但我不记得确切的语法:

Get-Service | where {($_.Status -eq "Stopped"|"Running"|"...")}
Run Code Online (Sandbox Code Playgroud)

Oca*_*tal 6

您可以使用-containsgsv别名:

gsv | where-object {@("Stopped","Running") -contains $_.Status}
Run Code Online (Sandbox Code Playgroud)

编辑:您也可以使用-match运算符:

gsv | where-object {$_.Status -match "Stopped|Running"}
Run Code Online (Sandbox Code Playgroud)

2.EDIT:一个较短的版本,特别感谢@Joey:

gsv | ? {$_.Status -match "Stopped|Running"}
Run Code Online (Sandbox Code Playgroud)

  • 那么,最短的变体可能是`gsv |?{1,4-eq $ _.状态}`使用一些常见的高尔夫技巧:-) (4认同)