PowerShell Comparison Operators

This tutorial will provide you information about PowerShell Comparison Operators. Comparison operators are used widely when you are writing your scripts. They will help you to test, compare, find, modify replace data and information. The comparison operators, as per Microsoft, are divided into those five types.

Types of comparison operators:

Equality

Matching

Containment

Replacement

Type

Each type of comparison operator has different purpose. We will check what each type of comparison operators are doing in more details and which are those operators. On each category we will also see few examples that may help you to understand better their use.

Comparison Operators List

Equality comparison operators

Equality comparison operators will check if two values are equal, and also if one values is less or greater than the other value. If a value is checked against a collection and a match is found the equality operators will not stop until they will find all values in the collection. Below is the list of the equality comparison operators:

-eq – Equals

– Equals -ne – Not equals

– Not equals -gt – Greater than

– Greater than -ge – Greater than or equal

– Greater than or equal -lt – Less than

– Less than -le – Less than or equal

Examples

-eq

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $a -eq $b True

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $a -eq $b False

PS S:\> $a = "aaa" PS S:\> $b = "aaa" PS S:\> $a -eq $b True

PS S:\> $a = "aaa" PS S:\> $b = "bbb" PS S:\> $a -eq $b False

PS S:\> $a = "aaa","bbb","ccc" PS S:\> $b = "aaa" PS S:\> $a -eq $b aaa

PS S:\> $a = "aaa","bbb","ccc" PS S:\> $b = "aaa" PS S:\> $b -eq $a False

PS S:\> $a = 1 PS S:\> $b = "bbb" PS S:\> $a -eq $b.count True

PS S:\> $a = 3 PS S:\> $b = "bbb" PS S:\> $a -eq $b.count False

-ne

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $a -ne $b False

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $a -ne $b True

PS S:\> $a = "aaa" PS S:\> $b = "aaa" PS S:\> $a -ne $b False

PS S:\> $a = "aaa" PS S:\> $b = "bbb" PS S:\> $a -ne $b True

PS S:\> $a = "aaa","bbb","ccc" PS S:\> $b = "aaa" PS S:\> $a -ne $b bbb ccc

PS S:\> $a = "aaa","bbb","ccc" PS S:\> $b = "aaa" PS S:\> $b -ne $a True

PS S:\> $a = 1 PS S:\> $b = "bbb" PS S:\> $a -ne $b.count False

PS S:\> $a = 3 PS S:\> $b = "bbb" PS S:\> $a -ne $b.count True

-gt

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $a -gt $b False

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $b -gt $a False

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $a -gt $b False

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $b -gt $a True

PS S:\> $a = 1,2,3,4,5 PS S:\> $b = 3 PS S:\> $a -gt $b 4 5

-ge

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $a -ge $b True

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $b -ge $a True

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $a -ge $b False

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $b -ge $a True

PS S:\> $a = 1,2,3,4,5 PS S:\> $b = 3 PS S:\> $a -ge $b 3 4 5

-lt

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $a -lt $b False

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $b -lt $a False

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $a -lt $b True

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $b -lt $a False

PS S:\> $a = 1,2,3,4,5 PS S:\> $b = 3 PS S:\> $a -lt $b 1 2

-le

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $a -le $b True

PS S:\> $a = 1 PS S:\> $b = 1 PS S:\> $b -le $a True

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $a -le $b True

PS S:\> $a = 1 PS S:\> $b = 2 PS S:\> $b -le $a False

PS S:\> $a = 1,2,3,4,5 PS S:\> $b = 3 PS S:\> $a -le $b 1 2 3

Matching comparison operators

Matching comparison operators will return true or false as an answer to the check of a variable. If you will use -match or -notmatch , the matching strings are saved under a default variable called $matches , which includes those values. Based on the operator that you will use, you can use different ways to perform the check. Below is the list of matching comparison operators:

-like – Returns true when string matches wildcard pattern

– Returns true when string matches wildcard pattern -notlike – Returns true when string does not match wildcard pattern

– Returns true when string does not match wildcard pattern -match – Returns true when string matches regex pattern; $matches contains matching strings

– Returns true when string matches regex pattern; contains matching strings -notmatch – Returns true when string does not match regex pattern; $matches contains matching strings

Examples

-like

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -like "*a" aaaaa

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -like "a*" aaaaa aaabb

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -like "*a*" aaaaa aaabb baaab

-notlike

Note lines 10 and 15

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -notlike "*aaa" bbbbb ccccc ddddd eeeee aaabb bbbcc cccdd dddee eeeff baaab cbbbc dcccd eddde feeef

Note line 14

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -notlike "aaa*" bbbbb ccccc ddddd eeeee bbbcc cccdd dddee eeeff baaab cbbbc dcccd eddde feeef

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -notlike "*aaa*" bbbbb ccccc ddddd eeeee bbbcc cccdd dddee eeeff cbbbc dcccd eddde feeef

-match

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -match "aaa" aaaaa aaabb baaab

PS S:\> $a = "baaaaab" PS S:\> $a -match "aaa" True PS S:\> $Matches Name Value ---- ----- 0 aaa

PS S:\> $a = "baaaaab" PS S:\> $a -match "bbb" False

–notmatch

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -notmatch "aaa" bbbbb ccccc ddddd eeeee bbbcc cccdd dddee eeeff cbbbc dcccd eddde feeef

PS S:\> $a = "baaaaab" PS S:\> $a -notmatch "aaa" False

PS S:\> $a = "baaaaab" PS S:\> $a -notmatch "bbb" True

Containment comparison operators

Containment comparison operators will check a reference value if it is contained in a collection. These operators are similar to equality operators. One of differences is that the return value is always a Boolean value. The other difference is that the operator will stop the check against a collection as soon as it finds the first match. Below is the list of containment comparison operators:

-contains – Returns true when reference value contained in a collection

– Returns true when reference value contained in a collection -notcontains – Returns true when reference value not contained in a collection

– Returns true when reference value not contained in a collection -in – Returns true when test value contained in a collection

– Returns true when test value contained in a collection -notin – Returns true when test value not contained in a collection

Examples

-contains

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -contains "aaaaa" True

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -contains "aaaab" False

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -contains "aaa" False

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -contains "aaaaa","bbbbb" False

-notcontains

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -notcontains "aaaaa" False

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -notcontains "aaaab" True

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -notcontains "aaa" True

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> $a -notcontains "aaaaa","bbbbb" True

-in

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> "aaaaa" -in $a True

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> "aaaab" -in $a False

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> "aaa" -in $a False

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> "aaaaa","bbbbb" -in $a False

-notin

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> "aaaaa" -notin $a False

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> "aaaab" -notin $a True

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> "aaa" -notin $a True

PS S:\> $a = "aaaaa","bbbbb","ccccc","ddddd","eeeee", "aaabb","bbbcc","cccdd","dddee","eeeff", "baaab","cbbbc","dcccd","eddde","feeef" PS S:\> "aaaaa","bbbbb" -notin $a True

Replacement comparison operators

Replacement comparison operator will replace the value or part of a value according to the regular expression that you will use. The operator by default is case-insensitive. There are to ways to force the behaviour of the operator. One is to use c in front of it to make it case-sensitive ( -creplace ). The other way is to use i in front of it to force its behaviour to be case-insensitive ( -ireplace ). Below is the only replacement comparison operators that can be used:

-replace – Replaces a string pattern

Examples

-replace

PS S:\> "aBcDe" -replace "a","b" bBcDe

PS S:\> "aBcDe" -replace "a","B" BBcDe

PS S:\> "aBcDe" -replace "A","b" bBcDe

PS S:\> "aBcDe" -replace "A","B" BBcDe

-creplace

PS S:\> "aBcDe" -creplace "a","b" bBcDe

PS S:\> "aBcDe" -creplace "a","B" BBcDe

PS S:\> "aBcDe" -creplace "A","b" aBcDe

PS S:\> "aBcDe" -creplace "A","B" aBcDe

-ireplace

PS S:\> "aBcDe" -ireplace "a","b" bBcDe

PS S:\> "aBcDe" -ireplace "a","B" BBcDe

PS S:\> "aBcDe" -ireplace "A","b" bBcDe

PS S:\> "aBcDe" -ireplace "A","B" BBcDe

Type comparison operators

Type comparison operators will check if the type of an object is the same as the defined or as another object.. Below is the list of type comparison operators:

-is – Returns true if both object are the same type

– Returns true if both object are the same type -isnot – Returns true if the objects are not the same type

Examples

-is

PS S:\> $a = 5 PS S:\> $b = "5" PS S:\> $a -is [int] True

PS S:\> $a = 5 PS S:\> $b = "5" PS S:\> $a -is [string] False

PS S:\> $a = 5 PS S:\> $b = "5" PS S:\> $b -is [string] True

PS S:\> $a = 5 PS S:\> $b = "5" PS S:\> $a -is $b.GetType() False

PS S:\> $a = "6" PS S:\> $b = "5" PS S:\> $a -is $b.GetType() True

-isnot

PS S:\> $a = 5 PS S:\> $b = "5" PS S:\> $a -isnot [int] False

PS S:\> $a = 5 PS S:\> $b = "5" PS S:\> $a -isnot [string] True

PS S:\> $a = 5 PS S:\> $b = "5" PS S:\> $b -isnot [string] False

PS S:\> $a = 5 PS S:\> $b = "5" PS S:\> $b -isnot [string] False

PS S:\> $a = "6" PS S:\> $b = "5" PS S:\> $a -isnot $b.GetType() False

Summary

Comparison Operators will help us filter out results when we are trying to retrieve information from other systems and get the exact results that we would like to while we are writing our scripts. I know that this tutorial has a lot of code examples and might confuse you. Read it carefully and it will help you. It is good also to test the behaviour of the operators yourself also, as practicing will help you understand them much easier. Comparison operators are not a difficult subject but it is really important to know them for future use in your scripts.

I hope the tutorial about comparison operators is helpful.

Please let me know your comments and thoughts. You feedback is appreciated.

Related Links: