PowerShellの比較演算子で値を評価した場合と配列を評価した場合の際について説明します。
例えばeq演算子。
eqはequalを表しており、左辺と右辺を評価して値が等しければTrueを返します。
ここで、下記のような配列があったとします。
配列に含まれる文字列"Uzuki"をeq演算子で評価してみます。
Boolean型の結果ではなく、"Uzuki"がそのまま返ってきます。
配列に含まれない文字列で評価してみます。
すると結果は何も表示されません。
計算結果の型を見てみると、いずれも配列型として返すようです。
以上から、配列に対してeq演算子を使った場合は『値が一致する要素を抜き出した配列を返す』ことがわかります。
フィルターするような挙動と考えるとわかりやすいでしょう。
ちなみに配列を右辺、文字列を左辺にすると今度はFalseが返ります。
左辺の型を元に右辺と評価する仕様からでしょうか。
同様に、比較演算子のne、like、matchを使用した場合も同様にフィルターされるような動きをします。
値が含まれるかどうかをBoolean型で欲しい場合は包含演算子を使います。
・contains演算子
・in演算子
containsとinは右辺・左辺が逆の意味になります。
配列に比較演算子を使用する場合はこのような挙動に注意する必要がありますね。