我正在尝试if在管道内使用。
我知道有where(别名?)过滤器,但是如果我只想在满足某个条件时才激活过滤器怎么办?
我的意思是,例如:
得到一些东西| ? {$_.someone -eq 'somespecific'} | 格式表
如何if在管道内部使用来打开/关闭过滤器?是否可以?是否有意义?
谢谢
编辑澄清
如果没有管道,它看起来像这样:
如果($过滤器){
得到一些东西| ? {$_.someone -eq 'somespecific'}
}
别的 {
取得一些东西
}
在回答 riknik 之后编辑
愚蠢的例子展示了我在寻找什么。您有一个存储在变量上的非规范化数据表,$data并且您想要执行一种“向下钻取”数据过滤:
功能数据过滤器{
参数([开关]$祖先,
[开关]$父母,
[开关]$孩子,
[字符串]$myancestor,
[字符串]$我的父母,
[字符串]$我的孩子,
[数组]$数据=[])
$数据 |
? { (!$ancestor) -or ($_.ancestor -match $myancestor) } |
? { (!$parent) -or ($_.parent -match $myparent) } |
? { (!$child) -or ($_.child -match $mychild) } |
}
例如,如果我只想按特定父级过滤:
datafilter -parent -myparent 'myparent' -data $mydata
这是一种非常优雅、高效且简单的利用方式?。尝试做同样的事情if,你就会明白我的意思。