PowerShellで使える演算子の一覧と使い方

PowerShellで使える演算子の一覧と使い方

Windowsに標準搭載されているコマンドインターフェース「PowerShell」では、値や変数に対してさまざまな演算を行うことができます。

そこでここでは、WindowsのPowerShellでどのような演算子が使えるのかや、それぞれの演算子の基本的な使い方を解説します。

算術演算子

算術演算子の一覧

演算子説明
+2つの値を加算する
-2つの値を減算する
*2つの値を乗算する
/2つの値を除算する
%2つの値の除算の余りを返す

算術演算子の使用例

PS> $a = 5
PS> $b = 2

PS> $a + $b
7

PS> $a - $b
3

PS> $a * $b
10

PS> $a / $b
2.5

PS> $a % $b
1

代入演算子

代入演算子の一覧

演算子説明
=右辺の値を左辺の変数の値に代入する
+=右辺の値を左辺の変数の値に加算する
-=右辺の値を左辺の変数の値から減算する
*=右辺の値で左辺の変数の値を乗算する
/=右辺の値で左辺の変数の値を除算する
%=右辺の値で左辺の変数の値を除算した余りを代入する

代入演算子の使用例

PS> $a = 5
PS> $b = 2

PS> $a = $b
PS> $a
2

PS> $a += $b
PS> $a
7

PS> $a -= $b
PS> $a
3

PS> $a *= $b
PS> $a
10

PS> $a /= $b
PS> $a
2.5

PS> $a %= $b
PS> $a
1

単項演算子

単項演算子の一覧

演算子説明
++左辺または右辺の変数の値をに1を加算する
--左辺または右辺の変数の値から1を減算する

単項演算子の使用例

PS> $a = 5

PS> $a++
PS> $a
6

PS> $c =$a++
PS> $c
5

PS> $c =++$a
PS> $c
6

単項演算子は後置きすると、値を返してから加算または減算され、前置きすると加算または減算されてから値が返されます。

比較演算子

比較演算子の一覧

演算子説明
-eq左辺の値と右辺の値が等しい
-ne左辺の値と右辺の値が異なる
-gt左辺の値が右辺の値より大きい
-ge左辺の値が右辺の値以上
-lt左辺の値が右辺の値より大きい
-le左辺の値が右辺の値以下

比較演算子を使った場合、結果が真ならbool値のTrueが、結果が偽ならFalseが返されます。

比較演算子の使用例

PS> 1 -eq 1
True

PS> 1 -gt 2
False

PS> 3 -lt 4
True

比較演算子は文字列の比較にも使用できますが、デフォルトでは大文字と小文字が区別されません。大文字と小文字を区別するときは、演算子の先頭に「c」を付けます。

PS> $str = "Hello"

PS> $str -eq "hello"
True

PS> $str -ceq "hello"
False

論理演算子

論理演算子の一覧

演算子説明
-and論理積
-or論理和
-xor排他的論理和
-not論理否定
!論理否定

論理演算子を使った場合、結果が真ならbool値のTrueが、結果が偽ならFalseが返されます。

論理演算子の使用例

PS> (1-eq 1) -and (3 -eq 4)
False

PS> (1-eq 1) -or (3 -eq 4)
True

PS> (1-eq 1) -xor (3 -eq 4)
True

PS> (1-eq 1) -xor (3 -eq 3)
False

PS> !(1-eq 1)
False

PS> !(1-eq 2)
True

文字列演算子

文字列演算子の一覧

演算子説明
+文字列の連結
+=文字列の追加
*文字列の繰り返し
-like文字列をワイルドカードで比較し、一致でTrue
-notlike文字列をワイルドカードで比較し、不一致でTrue
-match文字列を正規表現で比較し、一致でTrue
-notmatch文字列を正規表現で比較し、不一致でTrue
-replace文字列を置換
-fフォーマットの指定

文字列演算子の使用例

PS> $str1 = "My name is"
PS> $str2 = "Tarou"

PS> $str1 + $str2
My name isTarou

PS> $str2 * 2
TarouTarou

PS> $str2 -like "T*"
True

PS> $str2 -match "[a-z]"
True

PS> $str2 -match "[3-8]"
False

PS> $str2 -replace "Ta","Ji"
Jirou

なお、-match演算子で一致する文字列があった場合、シェル変数$matchesにパターンに一致する文字列が格納されます。

PS> $str1 = "My name is"
PS> $str1 -match "(.)(.)"
PS> $matches

Name      Value
----      -----
2         y
1         M
0         My