{$_.Status -eq "Running"} 如何工作(PowerShell)?

{$_.Status -eq "Running"} 如何工作(PowerShell)?

使用 powershell 打印出当前正在运行的 2 个服务的命令是

get-service | ? {$_.Status -eq "Running"} | select -first 2 | fl

我确实了解该命令的整体功能,但令我困惑的部分是 ? {$_.Status -eq "Running"}。我可能想得太多了,但这些符号(? _ . $) 有什么特定含义吗?

有人能解释一下该命令的这一部分是如何工作的吗?

答案1

在 Powershell 中问号是Where-Object cmdlet 的别名

'?' 符号和 Where 都是 Where-Object 的别名。

$_管道的结果/输出如上所述这里

包含管道对象中的当前对象。您可以在对管道中的每个对象或选定对象执行操作的命令中使用此变量。

为了减少字符数量,而不是打字

Get-Service | Where-Object {$_.Status -eq "Running"} | Select-Object -First 2 | Format-List

您可以使用别名输入:

get-service | ? {$_.Status -eq "Running"} | select -first 2 | fl

或者

gsv | ? {$_.Status -eq "Running"} | select -first 2 | fl

相关内容