РАЗДЕЛ 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