2017-04-19 40 views
2

我想知道是否存在使用Where-Object排除事物數組的簡單/單行方式。排除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

PS3 +:'$ data |其中var -notin $ exclude'其中$ exclude是一個字符串數組。 – wOxxOm

+0

非常感謝,那個工作......''data |其中{$ _。var -notin $ array}' – AdilZ

回答

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

你可以使用-notin..陣列的符號,如果你的數字實際上是整數,而不是字符串。

否則,您可以將單個位置與多個條件連接在一起,並與-or連接,而不是管道連接許多其他的對象命令。

+0

非常感謝你,我沒有記得* -notin *的正確用法,它工作得很好....用代碼'$ data |其中{$ _。var -notin $ array}' – AdilZ

+3

請注意'-notin'在PowerShell v3之前不可用。在較早的版本中,使用'1..12 -notcontains $ _。var'代替。 –