Как и в любом языке программирования в PowerShell также присутствуют операторы сравнения, при чём не в обычном для людей виде знаков <, >, =.

Вместо знаков в PowerShell используются буквы, которые обозначают сами слова сравнения, например -gt означает Greater than (Больше).

Таблица операторов сравнения

Оператор Значение Описание
-le Less than or equal Меньше или равно
-lt Less than Меньше чем
-ge Greater than or equal Больше или равно
-gt Greater than Больше чем
-ne Not equal Не равно
-eq Equal Равно
-like Wildcard comparison Поиск по шаблону
-notlike Wildcard comparison Поиск по несоответствию шаблонов
-match Regular expression comparison Поиск соответствия по регулярным выражениям
-notmatch Regular expression comparison Поиск несоответствия по регулярным выражениям
-in Containment operator Поиск по коллекции
-notin Containment operator Поиск по коллекции (не содержит)
-replace Replace operator Заменяет часть или всё значение
-is Type Возвращает true если объекты одинаковы
-isnot Type Возвращает true если объекты неодинаковы

le

Этот оператор означает меньше или равно и эквивалентен <=.

5 -le 8
5 -le 5
True
True

lt

Этот оператор означает меньше и эквивалентен <.

5 -le 8
True

ge

Этот оператор означает больше или равно и эквивалентен >=.

5 -ge 8
10 -ge 8
10 -ge 10

False
True
True

gt

Этот оператор означает больше и эквивалентен >.

5 -gt 8
12 -gt 8

False
True

ne

Этот оператор означает не равно и также может использоваться для сравнения буквенных значений.

2 -ne  2
"abc" -ne  "def"
"abc" -ne  "abc"
False
True
False

eq

Этот оператор означает равно и также может использоваться для сравнения буквенных значений.

2 -eq  2
"abc" -eq  "def"
"abc" -eq  "abc"
True
False
True

like

Этот оператор сопоставления и ведёт себя аналогично оператору -eq но работает только со словами и также может принимать регулярные выражения.

"my home here" -like "home"
"my home here" -like "*home*"
False
True

notlike

Этот оператор сопоставления и ведёт себя аналогично оператору -ne но работает только со словами и также может принимать регулярные выражения.

"my home here" -notlike "*home*"
"my home here" -notlike "*abc*"
False
True

match

Этот оператор сопоставления и ведёт себя аналогично оператору -like только с отличием того что он не обращает внимание на место символа поиска в строке.

Также при использовании -notmatch и -match создаётся автоматически переменная $Matches, к которой вы можете получить доступ.

"my home here" -like "home"
"my home here" -like "*home*"
"my home here" -match "home"
"my home here" -match "h[qoea]me"
False
True
True
True

Используя -match вы также можете разбивать какую-либо строку на переменные присваивая им значения слов из этого предложения используя регулярные выражения.

"I saw Helen yestrday" -match '.*\s(?<name>\w+)\s(?<date>\w+)'
$Matches
Name                           Value
----                           -----
date                           yestrday
name                           Helen
0                              I saw Helen yestrday

notmatch

Этот оператор сопоставления и ведёт себя аналогично оператору -notlike только с отличием того что он не обращает внимание на место символа поиска в строке.

"my home here" -notlike "*home*"
"my home here" -notlike "*abc*"
"my home here" -notmatch "home"
"my home here" -notmatch "h[aedb]me"
False
True
False
True

in and notin

Этот оператор себя как оператор -like только здесь вы можете для сравнения передать сразу коллекцию для сопоставления. Т.е. вместо того чтобы сопоставлять по одному значению вы делаете множественное сопоставление.

"avb" -in  "avb", "def"
"avb" -in  "asd", "def", "dasd", "derwerf", "grtg"
True
False
"avb" -notin  "avb", "def"
"avb" -notin  "asd", "def", "dasd", "derwerf", "grtg"
False
True

replace

Как уже понятно из названия этот оператор служит для замены значения. Например, вы можете переименовывать названия всех документов в папке используя регулярные выражения.

Пример с изменением расширения всех log файлов в текущей директории.

Get-ChildItem *.log | Rename-Item -NewName { $_.name -replace  '\.log$','.txt' }

Если вам важна чувствительность к регистру можно воспользоваться оператором -creplace.

"my home here" -replace "home", "****"
"my home here" -replace "\s(\w+)\s", " **** "
"my home here" -replace "HOME", "****"
"my home here" -creplace "HOME", "****"
my **** here
my **** here
my **** here
my home here

is and isnot

Операторы сравнения типов (-is и -isnot) используются для определения того, относится ли объект к определенному типу. Возвращает Boolean значение: true или false.

"abs" -is [int]
"abs" -isnot [int]
123 -is [int]
123 -isnot [int]
"abs" -is [string]
False
True
True
False
True