PowerShell: 論理演算子(and or xor not !)

PowerShellで使用する論理演算子には 「-and -or -xor -not !」があります。
論理演算子は真偽値(True/False)のどちらかしか持たない条件式を 評価する演算子です。条件式は1つ又は2つの場合があります。

例えば「条件Aと条件BがどちらもTrue(真)の場合、True(真)を返す」、 「条件Aまたは条件BのいずれかがTrue(真)の場合、True(真)を返す」 などの演算を行います。

各演算子の意味や使い方は次の通りです。

演算子意味使い方
-and論理積条件式A -and 条件式B
-or論理和条件式A -or 条件式B
-xor排他的論理和条件式A -xor 条件式B
-not論理否定-not 条件式
!論理否定! 条件式

論理積(AND)は条件式2つのどちらもTrueの場合にTrueを返し、 論理和(OR)は条件式2つのどちらかがTrueの場合にTrueを返します。 排他的論理和(XOR)は2つの条件式の真偽値が異なる場合にTrueを返し、 同じ場合はFalseを返します。 論理否定(NOT)は条件式がTrueの場合はFalseを返し、 条件式がFalseの場合はTrueを返します。 「-not」と「!」は同じ意味合いです。

以下は論理演算子の使用例です。 各演算子でTrueとなる場合とFalseになる場合を記述しています。

# 論理積(AND)
Write-Host ((1 -eq 1) -and (2 -eq 2)) # True
Write-Host ((1 -eq 1) -and (2 -eq 3)) # False

# 論理和(OR)
Write-Host ((1 -eq 1) -or (2 -eq 3)) # True
Write-Host ((1 -eq 2) -or (2 -eq 3)) # False

# 排他的論理和(XOR)
Write-Host ((1 -eq 1) -xor (2 -eq 2)) # False
Write-Host ((1 -eq 1) -xor (2 -eq 3)) # True
\
# 論理否定(NOT)
Write-Host (-not (1 -eq 1)) # False
Write-Host (-not (1 -eq 2)) # True

# 論理否定(!)
Write-Host (!(1 -eq 1)) # False
Write-Host (!(1 -eq 2)) # True

論理演算子を使う場合は()カッコを効果的に使用するようにしてください。 同じ意味の文を、()カッコを使う場合と使わない場合で比較してみます。

# ()カッコを使う場合
Write-Host ((1 -eq 1) -and (2 -eq 2)) 

# ()カッコを使わない場合
Write-Host (1 -eq 1 -and 2 -eq 2) 

上の文の方が可読性・メンテナンス性が高くなります。

(まとめ記事: PowerShell 演算子

PowerShell