我正在尝试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
,你就会明白我的意思。