gpt4 book ai didi

powershell - 如何在管道中使用 “if”语句

转载 作者:行者123 更新时间:2023-12-03 20:26:11 29 4
gpt4 key购买 nike

我正在尝试在管道内使用if

我知道有where(别名?)过滤器,但是如果我想仅在满足特定条件的情况下才激活过滤器,该怎么办?

我的意思是,例如:

得到东西| ? {$ _。someone -eq'somespecific'} |格式表

如何在管道内使用if来打开/关闭过滤器?可能吗?是否有意义?

谢谢

编辑以澄清

如果没有管道,它将看起来像这样:

if($ filter){
得到东西| ? {$ _。someone -eq'somespecific'}
}
其他{
取得一些东西
}


在ANSWER的riknik 之后进行编辑

愚蠢的例子显示了我在寻找什么。您具有存储在变量$data上的非规范化数据表,并且想要执行一种“向下钻取”数据过滤:

函数datafilter {
param([switch] $ ancestor,
[switch] $ parent,
[switch] $ child,
[string] $ myancestor,
[string] $ myparent,
[string] $ mychild,
[array] $ data = [])

$ data |
? {(!$ ancestor)-or($ _。ancestor -match $ myancestor)} |
? {(!$ parent)-or($ _。parent -match $ myparent)} |
? {(!$ child)-or($ _。child -match $ mychild)} |

}

例如,如果我只想按特定的父项进行过滤:
datafilter -parent -myparent 'myparent' -data $mydata
这是利用?的非常优雅,高效且简单的方法。尝试使用if做同样的事情,您将理解我的意思。

最佳答案

使用where-object时,条件不必严格与通过管道的对象相关。因此,考虑一种情况,有时我们希望过滤奇数个对象,但前提是要满足其他一些条件:

$filter = $true
1..10 | ? { (-not $filter) -or ($_ % 2) }

$filter = $false
1..10 | ? { (-not $filter) -or ($_ % 2) }

您在寻找这种东西吗?

关于powershell - 如何在管道中使用 “if”语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5809736/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com