是否可以根据某些条件将管道数据发送到两条不同的路径,而无需重新执行上游命令?这里的符号都是错误的,但这是我希望看到的......
PS> Get-SomeInterestingData `
| ?{ <condition> } `
| %{ <positive> } `
| %{ <negative> }
我可以使用嵌套管道/表达式来实现吗?
PS> Get-SomeInterestingData `
| %{
$_ | ?{ <condition> } | %{ <positive> } -or `
$_ | ?{ -not <condition> } | %{ <positive> }
}
如果您无法直接访问数据或数据生成函数,而是从管道接收数据怎么办?比如,作为脚本或函数参数 block 的一部分,例如...
param(
[Parameter(ValueFromPipeline = $true)]
$InputObject,
)
最佳答案
在 PowerShell 4.0 和更新版本中,您可以在 Split
模式下使用 Where()
扩展方法:
$Even,$Odd = @(1..10).Where({$_ % 2 -eq 0},'Split')
输入集合将被分成 2 个,满足过滤器的项和不满足过滤器的项。然后您可以处理每一个,而无需再次定义输入集合
关于powershell - 如何根据某些条件将数据 fork 到不同的管道中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44552281/