**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**-ne**– Not equals**-gt**– Greater than**-ge**– Greater than or equal**-lt**– 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**-notlike**– Returns true when string does not match wildcard pattern**-match**– Returns true when string matches regex pattern;`$matches`

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**-notcontains**– Returns true when reference value not contained in a collection**-in**– 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**-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:\> $a -isnot $b.GetType() True

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:**

- PowerShell Tutorials
- PowerShell Scripts
- about_Comparison_Operators | Microsoft Docs
- PowerShell Logical Operators

[…] on April 16, 2018by admin submitted by /u/SConstantinou [link] [comments] No comments […]