PowerShellを使用していると時々、演算子周りでちょくちょく混乱するのでこちらにまとめておきます
算術演算子
まずは、基本的な計算で使用する演算子です
演算子 | 内容 |
---|---|
+ | 足し算(加算) |
- | 引き算(減算) |
* | 掛け算(乗算) |
/ | 割り算(除算) |
% | 割り算のあまり(剰余) |
上記の使用例
Write-Host (1 + 1) # 2
Write-Host (5 - 2) # 3
Write-Host (3 * 4) # 12
Write-Host (9 / 3) # 3
Write-Host (5 % 2) # 1
代入演算子
代入演算子も意外とよく使います
演算子 | 内容 |
---|---|
= | 右辺の値を左辺の値に代入する |
+= | 右辺の値を左辺の値を加算する |
-= | 右辺の値を左辺の値から減算する |
*= | 右辺の値を左辺の値から乗算する |
/= | 右辺の値を左辺の値から除算する |
%= | 右辺の値を左辺の値から除算した余り |
# 代入
Write-Host ($a = 10) # 10
#加算
Write-Host ($a += 5) # 15
# 減算
Write-Host ($a -= 7) # 8
# 乗算
Write-Host ($a *= 6) # 48
# 除算
Write-Host ($a /= 12) # 4
# 除算の余り
Write-Host ($a %= 3) # 1
比較演算子
次によく使う比較演算子です
演算子 | 内容 | C#での演算子 |
---|---|---|
-eq | 等しい(左辺と右辺の値が等しい) | == |
-ne | 等しくない(左辺と右辺の値が等しくない) | != |
-gt | より大きい(左辺が右辺の値より大きい) | > |
-ge | 以上(左辺が右辺の値以上) | >= |
-lt | より小さい(左辺が右辺の値より小さい) | < |
-le | 以下(左辺が右辺の値以下) | <= |
上記の使用例
# 等しい(-eq)
Write-Host (100 -eq 100) # True
Write-Host ("Hoge" -eq "piyo") # False
# 等しくない(-ne)
Write-Host ("Hoge" -ne "piyo") # True
Write-Host (10 -ne 10) # False
# より大きい(-gt)
Write-Host (20 -gt 10) # True
Write-Host (10 -gt 20) # False
# 以上(-ge)
Write-host (110 -ge 110) # True
Write-host (100 -ge 110) # False
# より小さい(-lt)
Write-host (100 -lt 110) # True
Write-host (110 -lt 110) # False
# 以下(-le)
Write-host (110 -le 110) # True
Write-host (120 -le 110) # False
文字列比較のオプション
文字列を比較する際に大文字と小文字を区別する必要がある場合
デフォルトでは大文字と小文字を区別せずに単純な文字列として比較されます
オプション | 内容 |
---|---|
c | 大文字・小文字を区別する |
i | 区別しない(デフォルトの設定。特に指定しない場合の設定) |
上記の使用例
# デフォルト(何も指定しない場合)
Write-host ("Hoge" -eq "hoge") # True
# 大文字・小文字を区別する
Write-host ("Piyo" -ceq "piyo") # False
# 大文字・小文字を区別しない
Write-Host ("Huga" -ieq "huga") # True
論理演算子
こちらもよく使用する、論理演算子です
演算子 | 内容 | C#での演算子 |
---|---|---|
-and | 条件式Aと条件式Bが両方とも正しい | && |
-or | 条件式Aと条件式Bのどちらか一方が正しい | || |
-not | 条件式の結果を反転させる | ! |
上記の使用例
# And
Write-Host (("huga" -eq "huga") -and (1 -ne 2)) # True
Write-Host ((10 -ne 10) -and (100 -eq 100)) # False
# Or
Write-Host (("Hoge" -eq "hoge") -or (10 -ne 10)) # True
Write-Host (("piyo" -eq "hoge") -or (200 -ne 200)) # False
# Not
Write-Host (-not ("Huga" -eq "huga")) # False
Write-Host (-not ("Piyo" -eq "huga")) # True
文字列演算子
ワイルドカード比較、正規表現比較
演算子 | 内容 |
---|---|
-like | ワイルドカード比較で一致する場合True |
-notlike | ワイルドカード比較で一致しない場合True |
-match | 正規表現比較で一致する場合True |
-notmatch | 正規表現比較で一致しない場合True |
上記の使用例(正規表現についてはここでは説明していません)
# like
Write-Host ("HugaPiyo" -like "Huga*") # True
Write-Host ("HugaPiyo" -like "*Huga") # False
#notlike
Write-Host ("HugaPiyo" -notlike "*Huga") # True
Write-Host ("HugaPiyo" -notlike "Huga*") # False
# match
Write-Host ("HugaPiy" -match "HugaPiyo?") # True
Write-Host ("HugaPiyoHoge" -match "Huga.Piyo") # False
# notmatch
Write-Host ("HugaPiyoHoge" -notmatch "Huga.Piyo") # True
Write-Host ("HugaPiy" -notmatch "HugaPiyo?") # False
置き換え
演算子 | 内容 |
---|---|
-replace | 対象の文字列を置き換える(大文字・小文字は判断しない) |
-creplace | 対象の文字列を置き換える(大文字・小文字を判断する) |
上記の使用例
# replace
Write-Host ("HugaHoge" -replace "h", "A") # AugaAoge
# creplace
Write-Host ("HugaHoge" -creplace "h", "A") # HugaHoge