2017-04-19 17 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 | where var -notin $ exclude'ここで、$ excludeは文字列の配列です。 – wOxxOm

+0

ありがとう、それは働いた... '$ data | {$ _。var -notin $ array} ' – AdilZ

答えて

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

あなたの数字が実際に整数ではなく文字列である場合は、..配列表記で-notinを使用することができます。

そうでなければ、多くの追加のwhere-objectコマンドにパイプするのではなく、複数の条件が-orで結合された単一の場所を持つことができます。

+0

ありがとう、私は* -notin *の正しい使い方を覚えていませんでした。 where {$ _。var -notin $ array} ' – AdilZ

+3

PowerShell v3より前では' -notin'は利用できないことに注意してください。古いバージョンでは代わりに '1..12 -notcontains $ _ .var'を使います。 –

関連する問題