about_comparison_operators
トピック
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) は、正規表現を使用して指定したパターンと一致する要素ま
たは一致しない要素を検索します。
構文は次のとおりです。
<string[]> -match <regular-expression>
<string[]> -notmatch <regular-expression>
次の例は、-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 に変更します。
Get-ChildItem | Rename-Item -NewName { $_ -replace '.gif$','.jpg$' }
-replace 演算子の構文は次のとおりです。ここで、<original> プレースホルダーは置換される文字を表
し、<substitute> プレースホルダーは置換する文字を表します。
<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