PowerShell: Test Equality
Operator names are case-insensitive.
-eq operator
value1 -eq value2
-
return
$true
if value1 equals to value2. Case-Insensitive.3 -eq 3 # True
"a" -eq "A" # True
collection -eq value
-
filter collection, return items that is equal to value. Case-Insensitive.
Using -eq to Filter Array
If the left side of
-eq
is array, it'll return a array with elements that compares True.# using -eq as array filter 3,4,5 -eq 3 # return 3 3,4,5 -eq 6 # return empty array "cat", "dog", "bird" -eq "dog" # return "dog" # the array must be on the left side 3 -eq 3,4,5 # return False
-ieq
-
Same as
-eq
-ceq
-
Case-sensitive version of
-eq
"a" -ceq "A" # False
-eq is Not Symmetric. (Order Matters)
PowerShell equality operator is not symmetric (nor Reflexive).
That is, order matters.
x -eq y
and
y -eq x
may return different results, if x and y are not both numbers or string.
- When left-hand-side is a scalar (number or string or
$null
),-eq
return true if right-hand-side is a exact match, else false. - When left-hand-side is a array,
-eq
acts as a filter.
For example:
$x = 3,4,5 $y = 3 $x -eq $y # return 3 $y -eq $x # return False
Test for $null
To test for $null
, always put $null
on left-hand-side.
$x = 1,2,3 $null -eq $x # return False $x -eq $null # return empty array
-ne operator (Test not equal)
-ne
-
negation of
-eq
-ine
-
negation of
-ieq
"a" -ine "A" # False
-cne
-
negation of
-ceq
"a" -cne "A" # True