PowerShell 技能连载 - Where-Object 和 .Where()
从 PowerShell 4 开始,当您不想使用管道的时候,可以使用 Where()
和 ForEach()
方法来代替 Where-Object
和 ForEach-Object
。
所以如果您已经将所有数据加载到一个变量中,那么非流式操作会更高效:
1 | $Services = Get-Service |
要节约资源,最有效地方法仍然是使用流式管道,而不是用变量:
1 | Get-Service | Where-Object { $_.Status -eq 'Running' } |
请注意 Where-Object
和 .Where()
使用不同的数组类型,所以它们的输出技术上是不同的:
1 | PS C:\> (1..19 | Where-Object { $_ -gt 10 }).GetType().FullName |
PowerShell 技能连载 - Where-Object 和 .Where()