# Logical Operators in PowerShell

Marion Paul Kenneth Mendoza Jan 30, 2023 Feb 22, 2022

Logical operators can convert various conditions into a single condition.

This article will discuss real-world examples and apply logical operators in script with PowerShell.

## PowerShell Logical Operators

Logical operators are `and`, `or`, `xor`, and `not` or `!`.

## the `-and` Operator in PowerShell

The output is `true` if `\$a` and `\$b` are `true`; otherwise, `false`.

Truth Table:

A B Output
0 0 0
1 0 0
0 1 0
1 1 1
``````\$a = 0
\$b = 0
\$a -and \$b # false (if both variables are false)

\$a = 1
\$b = 0
\$a -and \$b  # false (if any of the variables are false)

\$a = 1
\$b = 1
\$a -and \$b # true (if both variables are true)
``````

The `-and` operator returns `true` only when both are true. In general, the `-and` operators are used where we want all conditions to be checked and fulfilled.

Here is an example of both conditions that need to be fulfilled.

``````\$attendance = 102
\$paid = "Y"
if(\$attendance -gt 100 -and \$paid -eq "Y"){
Write-Output "Allow for examination."
}
``````

Output:

``````Allow for examination.
``````

## the `-or` Operator in PowerShell

The output is `false` if `\$a` and `\$b` is `false`, compared to the `-and` operator.

The `-or` operator only needs one variable to be `true` to output `true`.

Truth Table:

A B Output
0 0 0
1 0 1
0 1 1
1 1 1
``````\$a = 0
\$b= 0
\$a -or \$b # false (if both conditions are false)

\$a = 1
\$b = 0
\$a -or \$b # true (if any of the variables are true)

\$a = 1
\$b = 1
\$a -or \$b  # true (if both of the variables are true)
``````

The `-or` operator returns `false` only when both conditions are `false`. In general, the `-or` operators are used when considering any conditions as `true`.

``````\$attendance = 99
\$marks = 201
if(\$attendance -gt 100 -or \$marks -gt 200){
Write-Output "Give five extra marks."
}
``````

Output:

``````Give five extra marks.
``````

## the `-xor` Operator in PowerShell

The exclusive `or` or `-xor` results from `true` if only one of `\$a` or `\$b` is `true`. If both conditions are `true`, `-xor` yields a result of `false`.

Truth Table:

A B Output
0 0 0
1 0 1
0 1 1
1 1 0
``````('a' -eq 'A') -xor ('a' -eq 'z') # true as one of them is true
('a' -eq 'A') -xor ('Z' -eq 'z') # false as both of them is true
('a' -eq 's') -xor ('Z' -eq 'p') # false as both of them are false
``````

## the `-not` Operator in PowerShell

The `-not` operator returns the opposite of the expression output. If the output of the expression is `true`, the operator will return it as `false`, and vice-versa.

``````-not ('a' -eq 'a') # false as the output of expression is true
-not ('v' -eq 'a') # true as output expression is false
-not ('v' -eq 'V') # false as output expression is true
-not ('V' -eq 'V1') # true as output expression is false
``````

The exclamation point `!` is the same as the `-not` operator.

``````!('a' -eq 'a')  # false as the output of expression is true
!('v' -eq 'a') # true as output expression is false
!('v' -eq 'V') # false as output expression is true
!('V' -eq 'V1') # true as output expression is false
``````

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.