There are many instances where we need to use PowerShell comparison operators to compare strings and numbers. Here we go through some quick examples.
Comparing Strings with PowerShell
Here we use ‘eq’ to see if one string equals another. This is case-insensitive, meaning that the comparison ignores uppercase and lowercase characters. If we want a case-sensitive comparison, we use ‘ceq’.
A handy comparison operator is ‘like’ since we can use the asterisk as a wildcard to see if strings start with, end with or contain a certain other string of text.
#case insensitive comparison
write-host ("yesterday" -eq "yesterday")
#returns true
#case insensitive comparison
write-host ("yesterday" -eq "Yesterday")
#returns true
#case sensitive comparison
write-host ("yesterday" -ceq "Yesterday")
#returns false due to the upper case Y
#starts with 'yes'
write-host ("yesterday" -like "yes*")
#returns true
#ends with 'day'
write-host ("yesterday" -like "*day")
#returns true
#contains 'ter'
write-host ("yesterday" -like "*ter*")
#returns true
We can also do the inverse of the above, by comparing a string that is not equal to (-ne) or not like (-notlike) another string of text:
#case insensitive comparison
write-host ("yesterday" -ne "yesterday")
#returns false
#case insensitive comparison
write-host ("yesterday" -ne "Yesterday")
#returns false
#case sensitive comparison
write-host ("yesterday" -cne "Yesterday")
#returns true due to the upper case Y
#starts with 'yes'
write-host ("yesterday" -notlike "yes*")
#returns false
#ends with 'day'
write-host ("yesterday" -notlike "*day")
#returns false
#contains 'ter'
write-host ("yesterday" -notlike "*ter*")
#returns false
Comparing Numbers with PowerShell
When comparing numbers, a number is either equal to (-eq), greater than (-gt) or less than (-lt) another number.
write-host (1 -eq 1)
#returns true
write-host (2 -gt 1)
#returns true
write-host (1 -lt 2)
#returns true
Finally we can compare if a number is greater than or equal to (-ge) or less than or equal to (-le) another number like so:
write-host (1 -ge 1)
#returns true
write-host (2 -le 2)
#returns true