Operators


Логические

  • -and Логический оператор И

    Wake up, Neo, select all

    (1 -eq 1) -and (1 -eq 2)
    # False
  • -or Логический оператор ИЛИ

    Wake up, Neo, select all

    (1 -eq 1) -or (1 -eq 2)
    # True
  • -xor Логическое исключающее ИЛИ

    Wake up, Neo, select all

    (1 -eq 1) -xor (2 -eq 2)
    # False
  • -not ! Логическое НЕ

    Wake up, Neo, select all

    -not (1 -eq 1)
    # False
    !(1 -eq 1)
    # False

Равенство

  • -eq (equals) равно

    Wake up, Neo, select all

    $date = Get-Date
    if($date.Year -eq 2021){
    write-host "Машина времени не сработала..."
    }
    # "Машина времени не сработала..."
  • -ne (not equals)не равно

    Wake up, Neo, select all

    $str = "hello"
    $str.Length -ne 5
    # False
  • -gt (greater than) больше чем

    Wake up, Neo, select all

    $str = "hello"
    $str.Length -gt 5
    # False
  • -ge (greater or equals) больше или равно

    Wake up, Neo, select all

    $str = "hello"
    $str.Length -ge 5
    # True
  • -lt (less than) меньше чем

    Wake up, Neo, select all

    $str = "hello"
    $str.Length -lt 5
    # False
  • -le (less or equals) меньше или равно

    Wake up, Neo, select all

    $arr = @(15, 18, 17)
    $arr.Count -le 2
    # False

Если входные данные являются коллекцией, вышеуказанные операторы возвращают соответствующие члены этой коллекции

Wake up, Neo, select all

$arr = 1, 2, 3, 4
$arr -lt 3
# 1 2
$arr -ge 3
# 3 4

Соответствие

  • -like строка соответствует представленному шаблону

  • -notlike строка не соответствует представленному шаблону
    -like и -notlike ведут себя аналогично -eq и -ne , но правая часть может быть строкой, содержащей подстановочные знаки.

    Подстановочный знакОписание
    *Совпадение с нулем или несколькими символами
    ?Совпадение с одним символом в этой позиции
    []Совпадение с диапазоном символов
    []Совпадение с конкретными символами

    Wake up, Neo, select all

    "PowerShell" -like "*shell" # Output: True
    "PowerShell" -notlike "*shell" # Output: False
    "PowerShell" -like "Power?hell" # Output: True
    "PowerShell" -notlike "Power?hell" # Output: False
    "PowerShell" -like "Power[p-w]hell" # Output: True
    "PowerShell" -notlike "Power[p-w]hell" # Output: False
    "PowerShell" -like "Power[sg]hell" # Output: True

    "PowerShell", "Server" -like "*shell" # Output: PowerShell
    "PowerShell", "Server" -notlike "*shell" # Output: Server
  • -match строка соответствует шаблону регулярного выражения

  • -notmatch строка не соответствует шаблону регулярного выражения
    -match и -notmatch используют регулярные выражения для поиска

    Wake up, Neo, select all

    # Тест на частичное совпадение, показывающий, как по-разному ведут себя -match и -like
    "PowerShell" -match 'shell' # Output: True
    "PowerShell" -like 'shell' # Output: False

    # Использование регулярного выражения
    "PowerShell" -match '^Power\w+' # Output: True
    'bag' -notmatch 'b[iou]g' # Output: True

❗️ Специальные символы


Специальные символы регулярных выражений, которые нужно экранировать знаком\, для непосредственного поиска данных символов: . $ ^ { [ ( | ) * + ? \

Если входные данные являются коллекцией, вышеуказанные операторы возвращают соответствующие члены этой коллекции

Wake up, Neo, select all

$arr = "a", 5, "qwe", 800
$arr -match "\d"
# 5 800

Замена

  • -Replace заменяет строки, соответствующие шаблону регулярного выражения

    Wake up, Neo, select all

    $str = "he 11 o"
    $str -replace "\s*1\s*", "l"
    # hello

    Wake up, Neo, select all

    $arr = "a1", "b5", "a800", "bqwe"
    $arr -replace "[^ab]"
    # a b a b

Вхождение

  • -contains Коллекция содержит значение

  • -notcontains Коллекция не содержит значение

    Wake up, Neo, select all

    $arr = "a", 5, "qwe", 800
    $arr -contains "qwe"
    # True
  • -in значение находится в коллекции

  • -notin значение не находится в коллекции

    Wake up, Neo, select all

    $arr = "a", 5, "qwe", 800
    "qwe" -in $arr
    # True

Тип

  • -is оба объекта имеют одинаковый тип

  • -isNot объекты имеют разные типы

    Wake up, Neo, select all

    $var = 555
    $var -is [int]
    # True
    $var = "555"
    $var -isNot [int]
    # False

Разделение / Соединение

  • -split разделяет одну или несколько строк на подстроки
    По умолчанию разделителем являются пробелы, включая пробелы и непечатаемые символы, например символ новой строки и знак табуляции.

    Wake up, Neo, select all

    -split "red yellow blue green"
    <#
    red
    yellow
    blue
    green
    #>

    Можно указать собственный делитель. По умолчанию делителем является регулярное выражение.

    Wake up, Neo, select all

    "Hello1,2World7!" -split "\d"
    <#
    Hello
    ,
    World
    !
    #>
  • -Join объединяет набор строк в одну строку.
    По умолчанию объединение происходит без разделителей.

    Wake up, Neo, select all

    $a = "a", "b", "c"
    -join $a
    # abc

    Можно указать собственный разделитель.

    Wake up, Neo, select all

    $a = "a", "b", "c"
    $a -join "/"
    # a/b/c

По умолчанию операторы не чувствительны к регистру. Для использования операторов с учетом регистра,
добавьте перед оператором символ c, например: -cmatch ; -clike ; и т.д. .