
記事記号:[me1522] 初版:2011/May/10

トピック
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