РАЗДЕЛ
about_Comparison_Operators
КРАТКОЕ ОПИСАНИЕ
Описание операторов сравнения, используемых в Windows PowerShell.
ПОЛНОЕ ОПИСАНИЕ
Операторы сравнения позволяют указать условия сравнения и включения,
удовлетворяющих указанным шаблонам. При использовании оператора сравнения
необходимо указать величины, которые требуется сравнивать, а также
оператор, который будет разделять эти величины.
По умолчанию во всех операторах сравнения не учитывается реестр
символов. Для учета реестра символов в операторе сравнения
необходимо указать перед именем оператора букву "c".Например,
"-ceq" - это версия оператора "-eq", учитывающая реестр
символов. Чтобы отменить учет реестров символов в явном виде
укажите перед именем оператора букву "i". Например, "-ieq" - это
версия оператора "-eq", в которой явно отключен учет реестра символов.
Все операторы сравнения, кроме операторов включения (-contains,
-notcontains) и операторов типа (-is, -isnot), возвращают
логическое значение, если в качестве входных данных оператора
(значение слева от оператора) используется одно значение
(скаляр). Если в качестве входных данных используется коллекция
значений, операторы включения и операторы типа возвращают
все соответствующие значения. Если в коллекции не найдено
соответствий, эти операторы не вернут ничего. Операторы
включения и типа всегда возвращают логическое значение.
Оболочка Windows PowerShell поддерживает следующие операторы
сравнения.
--eq
Описание. Равенство. Распространяется на случай совпадения значений.
Пример:
C:\PS> "abc", "def" -eq "abc"
abc
-ne
Описание. Неравенство. Распространяется на случай несовпадения значений.
Пример:
C:\PS> "abc", "def" -ne "abc"
def
-gt
Описание. Больше.
Пример:
C:\PS> 8 -gt 6
True
-ge
Описание. Больше или равно.
Пример:
C:\PS> 8 -ge 8
True
-lt
Описание. Меньше.
Пример:
C:\PS> 8 -lt 6
False
-le
Описание. Меньше или равно.
Пример:
C:\PS> 6 -le 8
True
-like
Описание. Соответствие с использованием подстановочного знака (*).
Пример:
C:\PS> "Windows PowerShell" -like "*shell"
True
-notlike
Описание. Несоответствие с использованием подстановочного знака (*).
Пример:
C:\PS> "Windows PowerShell" -notlike "*shell"
False
-match
Описание. Соответствие строк с учетом регулярных выражений.
Если в качестве входных данных используется скалярное значение,
оператор заносит результат в автоматическую переменную
$Matches. Пример:
C:\PS> "Sunday" -match "sun"
True
C:\PS> $matches
Имя Значение
--- --------
0 sun
-notmatch
Описание. Несоответствие строк. Используются регулярные выражения.
Если в качестве входных данных используется
скалярное значение, оператор заносит результат в
автоматическую переменную $Matches.
Пример:
C:\PS> "Sunday" -notmatch "sun"
False
C:\PS> $matches
Имя Значение
--- --------
0 sun
-contains
Описание. Оператор включения. Распространяется на случай
совпадения значений, которые не являются фрагментом значения.
Всегда возвращает логическое значение.
Пример:
C:PS> "abc", "def" -contains "def"
True
-notcontains
Описание. Оператор включения. Не распространяется на случай
совпадения значений. Всегда возвращает логическое значение.
Пример:
C:PS> "Windows", "PowerShell" -notcontains "Shell"
True
-replace
Описание. Оператор замены. Изменяет указанные элементы значения.
Пример:
C:\PS> "Get-Process" -replace "Get", "Stop"
Stop-Process
Операторы равенства
Операторы равенства (-eq, -ne) возвращают значение TRUE или
соответствующие элементы, если одно или несколько входных
значений совпадают с указанным шаблоном. Весь шаблон должен
соответствовать всему значению.
В следующих примерах показано функционирование оператора равенства.
C:PS> 1,2,3 -eq 2
2
C:PS> "PowerShell" -eq "Shell"
False
C:PS> "Windows", "PowerShell" -eq "Shell"
C:PS>
C:\PS> "abc", "def", "123" -eq "def"
def
Операторы включения
Операторы включения (-contains и -notcontains) сходны с операторами
равенства. Однако операторы включения всегда возвращают логическое
значение, даже если в качестве входных данных использовалась коллекция.
Кроме того, в отличие от операторов равенства, операторы включения
возвращают значение при обнаружении первого совпадения. Операторы
равенства оценивают все входные данные и затем возвращают все совпадения
в коллекции. В следующих примерах показано функционирование оператора -contains.
C:PS> 1,2,3 -contains 2
True
C:PS> "PowerShell" -contains "Shell"
False
C:PS> "Windows", "PowerShell" -contains "Shell"
False
C:\PS> "abc", "def", "123" -contains "def"
True
C:\PS> "true", "blue", "six" -contains "true"
True
В следующем примере продемонстрировано отличие операторов
включения от оператора равенства. Операторы включения всегда
возвращают значение TRUE при первом совпадении.
C:\PS> 1,2,3,4,5,4,3,2,1 -eq 2
2
2
C:\PS> 1,2,3,4,5,4,3,2,1 -contains 2
True
При обработке коллекции очень большого объема оператор
-contains возвращает результаты быстрее, чем оператор равенства.
Операторы совпадения
Операторы совпадения (-match и -notmatch) выполняют поиск
элементов, которые соответствуют или не соответствуют
указанному шаблону при использовании регулярных выражений.
Синтаксис:
<string[]> -match <регулярное_выражение>
<string[]> -notmatch <регулярное_выражение>
Ниже показаны примеры использования оператора -match.
C:\PS> "Windows", "PowerShell" -match ".shell"
PowerShell
C:\PS> (get-command get-member -syntax) -match "-view"
True
C:\PS> (get-command get-member -syntax) -notmatch "-path"
True
C:\PS> (get-content servers.txt) -match "^Server\d\d"
Server01
Server02
Операторы совпадения выполняют поиск только по строкам. Они не могут
выполнять поиск по массивам целых чисел и другим объектам.
Операторы -match и -nomatch заполняют автоматическую переменную
$Matches, если входные данные (аргумент с левой стороны) оператора
представляют собой один скалярный объект. Если входные данные
являются скаляром, операторы -match и -nomatch возвращают логическое
значение и устанавливают в качестве значения автоматической
переменной $Match совпавшие компоненты аргумента.
Если входные данные являются коллекцией, операторы -match и -nomatch
возвращают соответствующие элементы коллекции, но не изменяют значение
автоматической переменной $Match.
Например, следующая команда отправляет коллекцию строк в
оператор -match. Оператор -match возвращает элементы коллекции,
которые соответствуют шаблону. При этом значение автоматической
переменной $Matches не изменяется.
C:\PS> "Sunday", "Monday", "Tuesday" -match "sun"
Sunday
C:\PS> $matches
C:\PS>
Напротив, следующая команда отправляет в оператор -match одну
строку. Оператор -match возвращает логическое значение и
изменяет значение автоматической переменной $Matches.
C:\PS> "Sunday" -match "sun"
True
C:\PS> $matches
Имя Значение
--- --------
0 Sun
Оператор -nomatch устанавливает значение автоматической
переменной $Matches, если входные данные являются скаляром, а
результат выполнения оператора равняется False, т. е. при
обнаружении совпадения.
C:\PS> "Sunday" -notmatch "rain"
True
C:\PS> $matches
C:\PS>
C:\PS> "Sunday" -notmatch "day"
False
C:\PS> $matches
C:\PS>
Имя Значение
--- --------
0 day
Оператор замены
Оператор -replace заменяет часть исходного значения или все
значение целиком на указанное значение с использованием
регулярных выражений. Оператор -replace может оказаться полезным при
выполнении многих административных задач, например при переименовании
файлов. Например, следующая команда изменяет расширения всех файлов
GIF на JPG.
Get-ChildItem | Rename-Item -NewName { $_ -replace
'.gif$','.jpg$' }
Ниже описан синтаксис оператора -replace, при этому <оригинал>
соответствует символам, которые необходимо заменить, а <замена>
- символам, которыми необходимо заменить оригинал.
<входные_данные> <оператор> <оригинал>, <замена>
По умолчанию оператор замены не учитывает регистр символов.
Для учета регистра символов используйте -creplace. Для явного
отключения учета регистра символов используйте -ireplace.
Рассмотрим следующие примеры.
C:\PS> "book" -replace "B", "C"
Cook
C:\PS> "book" -ireplace "B", "C"
Cook
C:\PS> "book" -creplace "B", "C"
book
Побитовые операторы
Оболочка Windows PowerShell поддерживает стандартные побитовые
операторы, включая побитовое И (-band), побитовое ИЛИ и побитовое
исключающее ИЛИ (-bor и -bxor). Начиная с версии Windows PowerShell
2.0, все побитовые операторы работают с 64-разрядными целыми числами.
Windows PowerShell поддерживает следующие побитовые операторы:
Оператор Описание Пример
-------- -------------------------- -------------------
-band Побитовое И C:\PS> 10 -band 3
2
-bor Побитовое ИЛИ (включающее) C:\PS> 10 -bor 3
11
-bxor Побитовое ИЛИ (исключающее) C:\PS> 10 -bxor 3
9
Побитовые операторы используют двоичный формат значений.
Например, для числа 10 используется битовая структура 00001010
(с учетом 1 байта), а для числа 3 - 00000011. При использовании
побитового оператора для сравнения 10 и 3 выполняется сравнение
отдельных битов в каждом байте.
При операции побитового И результирующий бит устанавливается в
1 только в том случае, если оба входных бита равняются 1.
00001010 (10)
00000011 ( 3)
------------------ bAND
00000010 ( 2)
При операции побитового ИЛИ (включающего) результирующий бит
устанавливается в 1, если любой из входных битов или они оба
равняются 1. Результирующий бит устанавливается в 0 только в
том случае, если оба входных бита равняются 0.
00001010 (10)
00000011 ( 3)
---------------- bOR (включающее ИЛИ)
00001011 (11)
При операции побитового ИЛИ (исключающего) результирующий бит
устанавливается в 1 только в том случае, если один из входных
битов равняется 1.
00001010 (10)
00000011 ( 3)
---------------- bXOR (исключающее)
00001001 ( 9)
СМ. ТАКЖЕ
about_Operators
about_Regular_Expressions
about_Wildcards
Compare-Object