В 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 } ) |
