在Where-Object中排除数组中的项目

时间:2017-04-19 19:37:09

标签: arrays powershell where

我想知道是否存在使用Where-Object排除一系列事物的简单/单行方式。

所以不要去:

 $filtereddata = $data |
     Where {$_.var -ne "1"} |
     Where {$_.var -ne "2"} |
     Where {$_.var -ne "3"} |
     Where {$_.var -ne "4"} |
     Where {$_.var -ne "5"} |
     Where {$_.var -ne "7"} |
     Where {$_.var -ne "10"} |
     Where {$_.var -ne "12"} 

我去了

 $filterddata = $data | Where {??????}

或类似的......

请注意,它们都是相同的.Var

有没有办法更简单地做到这一点?特别要说的是,在自动化场景中,要排除的 Var 的数量是否会不断增长?

1 个答案:

答案 0 :(得分:3)

$filtereddata = $data | Where{ $_.var -notin 1..12 }

如果您的数字实际上是整数而不是字符串,则可以将-notin..数组表示法一起使用。

否则,您可以使用-or连接多个条件的单个位置,而不是使用大量其他where-object命令。