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

Adi*_*ilZ 5 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"} 
Run Code Online (Sandbox Code Playgroud)

我去

 $filterddata = $data | Where {??????}
Run Code Online (Sandbox Code Playgroud)

或类似的东西...

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

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

Mar*_*agg 8

$filtereddata = $data | Where{ $_.var -notin 1..12 }
Run Code Online (Sandbox Code Playgroud)

你可以使用-notin..你的号码实际上是整数,而不是字符串数组符号。

否则,您可以将单个 where 与多个条件连接起来,-or而不是通过管道连接到许多额外的 where-object 命令。

  • 请注意,`-notin` 在 PowerShell v3 之前不可用。在旧版本中使用 `1..12 -notcontains $_.var` 代替。 (3认同)