В powershell операторы сравнения отличаются от принятой номенклатуры используемой в других языках.
Все популярные операторы сведены к нескольким таблицам
by Gistek
По умолчанию все операторы сравнения не являются чувствительными к регистру.
-eq | Equal | Равно |
-ne | Not equal | Не Равно |
-ge | Greater than or equal | Больше или Равно |
-gt | Greater than | Больше |
-lt | Less than | Меньше |
-le | Less than or equal | Меньше или Равно |
-like | Wildcard comparison | Использование символов подстановки для поиска соответствия образцу |
-notlike | Wildcard comparison | Использование символов подстановки для поиска несоответствия образцу |
-match | Regular expression comparison | Использование регулярных выражений для поиска соответствия образцу, например Regexp для IP-адреса такой: «\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}» (правда он не распознает невалидные адреса, но это уже проблема логики скрипта, а не Regexp’а) |
-notmatch | Regular expression comparison | Использование регулярных выражений для поиска несоответствия образцу. Подробнее про regexp в powershell можно почитать на Technet |
-replace | Replace operator | Заменяет часть или все значение слева от оператора |
-contains | Containment operator | Определение, содержит ли значение слева от оператора значение справа. В отличие от предыдущих операторов, результатом является булево значение |
-notcontains | Containment operator | Определение того, что значение слева от оператора не содержит значение справа. Результатом является булево значение |
Для сравнения с учетом регистра к команде подставляется префикс “c“. Для примера, оператор -eq с зависимостью от регистра изменяется на “-ceq”.
Для явно заданного независящего от регистра сравнения к команде подставляется префикс “i“. Пример: оператор -replace без зависимости от регистра будет -ireplace
Типы
-is | Является типом (e.g. $a -is [int] ) |
-isnot | Не является типом (e.g. $a -isnot [int] ) |
-as | Как тип, без ошибки если возникает неудача преобразования (e.g. 1 -as [string] treats 1 as a string ) |
Логические операторы PowerShell
-and | Оба условия должны быть истины, чтобы выражение было истинно (e.g. ($a -ge 5 -AND $a -le 15) ) |
-or | Одно или оба условия должны быть истины, чтобы выражение было истинно (e.g. ($a –eq “A” –OR $a –eq “B”) ) |
-xor | Одно условие должно быть истинно, а второе должно иметь значение “ложь”, чтобы выражение было истинно |
-not | Указанные условия должны иметь значение “ложь”, чтобы выражение было истинно |
-band | binary and |
-bor | binary or |
-bnot | binary not |
! | Указанное условие должно иметь значение “ложь”, чтобы выражение было истинно |
.. | Range operator (e.g. foreach ($i in 1..10) {$i } ) |
& | call operator (e.g. $a = “Get-ChildItem” &$a executes Get-ChildItem) |
. (dot followed by a space) | call operator (e.g. $a = “Get-ChildItem” . $a executes Get-ChildItem in the current scope) |
-F | Format operator (e.g. foreach ($p in Get-Process) { “{0,-15} has {1,6} handles” –F $p.processname,$p.Handlecount } ) |