PowerShell HelpFile - about_Comparison_Operators
 記事記号:[me1522] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_Comparison_Operators

簡易説明
    Windows PowerShell で値を比較する演算子について説明します。

詳細説明
    比較演算子を使用すると、値を比較し、指定したパターンに一致する値を検索するた
    めの条件を指定できます。比較演算子を使用するには、比較対象の値を演算子で区切
    って指定します。

    既定では、すべての比較演算子は大文字と小文字を区別しません。比較演算子で大文
    字と小文字が区別されるようにするには、演算子名の前に "c" を付けます。たとえ
    ば、"-eq" で大文字と小文字を区別する場合は "-ceq" とします。大文字と小文字を
    区別しないことを明示するには、演算子の前に "i" を付けます。たとえば、"-eq" 
    で明示的に大文字と小文字を区別しない場合は "-ieq" とします。

    含有演算子 (-contains、-notcontains) および型演算子 (-is、-isnot) を除くすべ
    ての比較演算子は、演算子に対する入力 (演算子の左側の値) が単一の値 (スカラー
    ) のときにブール値を返します。入力が値のコレクションである場合、含有演算子お
    よび型演算子は一致する値があればその値を返します。コレクションに一致する値が
    ない場合、これらの演算子は何も返しません。含有演算子および型演算子は常にブー
    ル値を返します。

    Windows PowerShell は、以下の比較演算子をサポートしています。

    -eq
      説明: 次の値と等しい。同一の値が格納されていることを示します。
      例:

          C:\PS> "abc", "def" -eq "abc"
          abc

    -ne
      説明: 次の値と等しくない。異なる値が格納されていることを示します。
      例:

          C:\PS> "abc", "def" -ne "abc"
          def

    -gt
      説明: 次の値より大きい。
      例:

          C:\PS> 8 -gt 6
          True

    -ge
      説明: 次の値以上。
      例:

          C:\PS> 8 -ge 8
          True         

    -lt
      説明: 次の値より小さい。
      例:

          C:\PS> 8 -lt 6
          False

    -le
      説明: 次の値以下。
      例:

          C:\PS> 6 -le 8
          True
 
    -like
      説明: ワイルドカード文字 (*) を使用した一致。
      例:

          C:\PS> "Windows PowerShell" -like "*shell"
          True

    -notlike
      説明: ワイルドカード文字 (*) を使用した不一致。
      例:

          C:\PS> "Windows PowerShell" -notlike "*shell"
          False

    -match
      説明: 正規表現を使用した文字列の一致。入力がスカラーの場合、$Matches 自動
      変数に値が設定されます。例:
                                      
          C:\PS> "Sunday" -match "sun"
          True

          C:\PS> $matches
          名前値
          ---- ----- 
          0  sun
 
    -notmatch
      説明: 文字列の不一致。正規表現を使用します。
            入力がスカラーの場合、$Matches 自動変数に値が設定されます。
      例:

          C:\PS> "Sunday" -notmatch "sun"
          False

          C:\PS> $matches
          名前値
          ---- ----- 
          0  sun
 
    -contains
      説明: 含有演算子。値の一部ではない同一の値を含みます。常にブール値を返します。
      例:

          C:PS> "abc", "def" -contains "def"
          True

    -notcontains
      説明: 含有演算子。同一の値を含みません。常にブール値を返します。
      例:

          C:PS> "Windows", "PowerShell" -notcontains "Shell"
          True

    -replace
      説明: 演算子を置き換えます。値の指定した要素を変更します。
      例:

          C:\PS> "Get-Process" -replace "Get", "Stop"
          Stop-Process

  等値演算子
      等値演算子 (-eq、-ne) は、TRUE の値を返すか、または 1 つまたは複数の入力の
      値が指定したパターンと同一の場合にその一致する値を返します。パターン全体が
      値全体に一致する必要があります。

      次の例は、等値演算子の結果を示しています。

          C:PS> 1,2,3 -eq 2
          2

          C:PS> "PowerShell" -eq "Shell"
          False

          C:PS> "Windows", "PowerShell" -eq "Shell"
          C:PS>

          C:\PS> "abc", "def", "123" -eq "def"
          def

  含有演算子
      含有演算子 (-contains および -notcontains) は等値演算子に似ています。ただ
      し、含有演算子は入力がコレクションの場合でも常にブール値を返します。


      また、等値演算子とは異なり、含有演算子は最初の一致を検出するとすぐに値を返
      します。等値演算子は、すべての入力を評価してからコレクションのすべての一致
      を返します。次の例は、-contains 演算子の結果を示しています。

          C:PS> 1,2,3 -contains 2
          True

          C:PS> "PowerShell" -contains "Shell"
          False

          C:PS> "Windows", "PowerShell" -contains "Shell"
          False

          C:\PS> "abc", "def", "123" -contains "def"
          True

          C:\PS> "true", "blue", "six" -contains "true"
          True

      次の例は、含有演算子と等値演算子との相違点を示しています。含有演算子は最初
      の一致について TRUE の値を返します。
 
          C:\PS> 1,2,3,4,5,4,3,2,1 -eq 2
          2
          2

          C:\PS> 1,2,3,4,5,4,3,2,1 -contains 2
          True
 
      コレクションが非常に大きい場合、-contains 演算子は等値演算子より速く結果を
      返します。

  マッチ演算子
      マッチ演算子 (-match および -notmatch) は、正規表現を使用して指定したパタ
      ーンと一致する要素または一致しない要素を検索します。

      構文は次のとおりです。

           -match 
           -notmatch 

      次の例は、-match 演算子のいくつかの使用方法を示しています。

          C:\PS> "Windows", "PowerShell" -match ".shell"
          PowerShell

          C:\PS> (get-command get-member -syntax) -match "-view"
          True

          C:\PS> (get-command get-member -syntax) -notmatch "-path"
          True

          C:\PS> (get-content servers.txt) -match "^Server\d\d"
          Server01
          Server02
         
      マッチ演算子は文字列内のみを検索します。整数の配列またはその他のオブジェク
      トを検索することはできません。

      -match および -notmatch 演算子は、演算子に対する入力 (左側の引数) が単一の
      スカラー オブジェクトのとき $Matches 自動変数に値を設定します。入力がスカ
      ラーの場合、-match および notmatch 演算子はブール値を返し、$Matches 自動変
      数の値をその引数の一致した要素に設定します。

      入力がコレクションの場合、-match および -notmatch 演算子はコレクションの一
      致するメンバーを返しますが、演算子は $Matches 変数に値を設定しません。

      たとえば、次のコマンドは、-match 演算子に文字列のコレクションを渡します。
      -match 演算子は一致するコレクションの項目を返します。$Matches 自動変数に値
      は設定されません。

          C:\PS> "Sunday", "Monday", "Tuesday" -match "sun"
          Sunday

          C:\PS> $matches
          C:\PS>

      一方、次のコマンドは、match 演算子に単一の文字列を渡します。-match 演算子
      は、ブール値を返し、$Matches 自動変数に値を設定します。

          C:\PS> "Sunday" -match "sun"
          True

          C:\PS> $matches

          名前                           値
          ----                           -----
          0                              Sun

      -notmatch 演算子は、入力がスカラーで、結果が False、つまり一致が検出された
      場合に $Matches 自動変数に値を設定します。

          C:\PS> "Sunday" -notmatch "rain"
          True

          C:\PS> $matches
          C:\PS>
          
          C:\PS> "Sunday" -notmatch "day"
          False

          C:\PS> $matches
          C:\PS>

          名前                           値
          ----                           -----
          0                              day

  置換演算子
      -replace 演算子は、正規表現を使用して値の全体または一部を指定した値に置き
      換えます。ファイル名の変更などの多くの管理タスクに対して、-replace 演算子
      を使用することができます。たとえば、次のコマンドはすべての .gif ファイルの
      ファイル名拡張子を .jpg に変更します。
 
          GGet-ChildItem | Rename-Item -NewName { $_ -replace '.gif$','.jpg$' }
 
      -replace 演算子の構文は次のとおりです。ここで、 プレースホルダー
      は置換される文字を表し、 プレースホルダーは置換する文字を表し
      ます。

          <input> <operator> <original>, <substitute>

      既定では、-replace 演算子は大文字と小文字を区別しません。大文字と小文字が
      区別されるようにするには、-creplace を使用します。大文字と小文字を区別しな
      いことを明示するには、ireplace を使用します。次に例を示します。

          C:\PS> "book" -replace "B", "C"
          Cook
          C:\PS> "book" -ireplace "B", "C"
          Cook
          C:\PS> "book" -creplace "B", "C"
          book

  ビット演算子
      Windows PowerShell は、ビット単位の AND (-band)、ビット単位の包含的および
      排他的 OR 演算子 (-bor および -bxor) を含む、標準のビット演算子をサポート
      しています。Windows PowerShell 2.0 からは、すべてのビット演算子は 64 ビッ
      トの整数で機能します。

      Windows PowerShell は、以下のビット演算子をサポートしています。

      演算子    説明                      例
      --------  ----------------------    -------------------
      -band     ビット単位の AND          C:\PS> 10 -band 3
                                          2
 
      -bor      ビット単位の OR (包含的)  C:\PS> 10 -bor 3
                                          11    

      -bxor     ビット単位の OR (排他的)  C:\PS> 10 -bxor 3
                                          9
 
      ビット演算子では値のバイナリ形式が処理されます。たとえば、数値 10 のビット
      構造は 00001010 で (1 バイトに基づきます)、数値 3 のビット構造は 00000011 
      です。ビット演算子を使用して 10 と 3 を比較すると、各バイトの個々のビットが
      比較されます。

      ビット単位の AND 演算では、結果のビットは両方の入力ビットが 1 のときのみ 1 
      に設定されます。

          00001010   (10)
          00000011   ( 3)
          ------------------ bAND
          00000010   ( 2)
 
      ビット単位の OR (包含的) 演算では、結果のビットは入力ビットの一方または両
      方が 1 のとき 1 に、両方の入力ビットが 0 に設定されているときのみ 0 に設定
      されます。

          00001010   (10)
          00000011   ( 3)
          ------------------ bOR (包含的)
          00001011   (11)

      ビット単位の OR (排他的) 演算では、結果のビットは一方の入力ビットが 1 のと
      きのみ 1 に設定されます。

          00001010   (10)
          00000011   ( 3)
          ------------------ bXOR (排他的)
          00001001   ( 9)

関連項目
    about_Operators
    about_Regular_Expressions
    about_Wildcards
    Compare-Object
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_Comparison_Operators
ご利用数: 1917606
感想・要望・問い合わせは こちら