MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


【PowerShell】比較演算子を配列に使用する場合の挙動について
profile-img
投稿者: muto-sanさん
投稿日:2019/10/01 11:38
更新日:2020/03/24 10:18
like-img
分類
技術
テクノロジー
Windows系サーバ
キャリア
運用・保守 / テクニカルサポート / 構築
投稿内容
PowerShellの比較演算子で値を評価した場合と配列を評価した場合の際について説明します。

例えばeq演算子。
eqはequalを表しており、左辺と右辺を評価して値が等しければTrueを返します。


ここで、下記のような配列があったとします。


配列に含まれる文字列"Uzuki"をeq演算子で評価してみます。


Boolean型の結果ではなく、"Uzuki"がそのまま返ってきます。
配列に含まれない文字列で評価してみます。


すると結果は何も表示されません。

計算結果の型を見てみると、いずれも配列型として返すようです。


以上から、配列に対してeq演算子を使った場合は『値が一致する要素を抜き出した配列を返す』ことがわかります。
フィルターするような挙動と考えるとわかりやすいでしょう。

ちなみに配列を右辺、文字列を左辺にすると今度はFalseが返ります。
左辺の型を元に右辺と評価する仕様からでしょうか。


同様に、比較演算子のne、like、matchを使用した場合も同様にフィルターされるような動きをします。


値が含まれるかどうかをBoolean型で欲しい場合は包含演算子を使います。

・contains演算子
・in演算子


containsとinは右辺・左辺が逆の意味になります。

配列に比較演算子を使用する場合はこのような挙動に注意する必要がありますね。
コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3