Символы и операторы#

Основные#

  • # - комментарии
  • <#...#> - комментарий с разделителями
  • ` - указание спец. символов внутри кавычек
  • - (тире) - ставится перед названиями параметров функций/командлетов/буквенных операторов
  • % - математический оператор возвращающий остаток от деления (11 % 5 = 1)
  • %{} – заменяет командлет ForEach-Object
  • ; - символ разделения строк (чтобы в коде писать несколько строк в одну)
  • = - оператор присвоения
  • &{} – встраивает scriptblock в выражение
  • ? - заменяет командлет Where-Object
  • : - для указания параметров-переключателей
  • . – обращение к динамическим методам класса ($datatable.Rows.Count)
  • .. – разделитель диапазона (1..4 = @(1,2,3,4))
  • :: – обращение к статическим методам класса ([Console]::WriteLine("PowerShell"))
  • @ - оператор массива:
    • заставляет значение быть массивом, даже если оно одноэлементное или нулевое;
    • может создавать хэш таблицы: @{"Key" = "Value";"Key2"="Value2"}
    • используется для Сплаттинга, т.е. передачи параметров функции в виде массива или словаря (@arr / @dic)
  • | - конвейер (как лямбда):
    • ($obj| \cmdlet\) / ($collection[]| \cmdlet\) - выполняет командлет для объекта;
    • $collection=@()| Foreach-Object{$_} - цикл, в котором как итератор используется $_ ;
    • ($proc = Get-Process Notepad* ) | Stop-Process - убивает все процессы содержащие в имени Notepad и возвращает все убитые процессы в $proc ;
    • (Get-Process Notepad* ) | Stop-Process - без возврата списка.

Операторы сравнения#

  • -match "#pattern#" - использование регулярных выражений
  • -is [type] - проверка типов
  • -isNot [type] - проверка типов

Подробнее об операторах сравнения, арифметических и логических операторах:

Обучение PowerShelldocs.sherparpa.ru

Условия в массивах#

  • -$array -\оператор сравнения\ $obj - возвращение массива объектов результатов сопоставления каждого элемента с объектом, или False (не пустой массив равен True для логических выражений)
  • -contains - массив содержит объект (bool)
  • -notcontains - массив НЕ содержит объект (bool)
  • -in - объект есть в массиве (bool)
  • -notin - объект отсутствует в массиве (bool)

contains & in отличаются записью $arr -contains $obj / $obj -in $arr

Скобки#

  • () – Круглые скобки:
    • передача аргументов,
    • приложение нескольких инструкций (к примеру),
    • разрешение неоднозначности (действия в скобках выполняются сначала),
    • создание массивов.
  • {} - Брекеты скобки:
    • приложение инструкции (к примеру, в блоке if),
    • встраивание скрипта в выражение (scriptblock).
  • [] - Квадратные скобки:
    • доступ к элементам массивов хеш-таблиц,
    • фильтр с использованием регулярного выражения,
    • указание ожидаемого типа данных для выражения,
    • обращение к пространству имён.

Кавычки#

  • " " - позволяют поместить внутри название переменной, и автоматически преобразовать в её значение.
  • ' ' - позволяют поместить внутри название переменной, но НЕ преобразовывать в её значение.

Кавычки поддерживают многострочность в коде (ENTER переносит на следующую строку код, `n - перенос строки выводе).

Кавычки экранируются двойной кавычкой (как в VB) + одинарные не надо экранировать внутри двойных и наоборот.

Кавычки, заключённые в символ @ (до и после), называются HereString и внутри них все символы идут как текст. В коде после '@"' и перед '"@' должен стоять ENTER.

Знак $#

  • $ - переменные
  • $$ - окончание последней выполненной команды, например $a="Hello"; $b=$$ итого $b = "Hello"
  • $^ - начало последней выполненной команды, например $a="Hello"; $b=$^ итого $b = "$a".
  • $_ ($PSItem) - применяется для передачи значения при использовании конвейера (|).
  • $? - хранящая статус выполнения предыдущей команды. Возвращает True если команда была выполнена успешно и False — если с ошибкой.
  • $() - применяется для выделения подвыражения в строке при использовании двойных кавычек. В этом случае выражение в скобках обрабатывается в первую очередь.
  • ${} - позволяет использовать в имени переменной нестандартные символы. Например: ${@,&$>?=*} = ″Hello, world″.

Escape-последовательности#

PowerShell поддерживает набор специальных последовательностей символов, которые используются для представления символов, не входящих в стандартную кодировку.

Последовательности обычно называют escape-последовательностями.

Escape-последовательности начинаются с символа обратной косой черты, называемого грависом (ASCII 96), и учитывают регистр.

Символ обратной кавычки также может называться Escape- символом.

Escape-последовательности обрабатываются только в строках, содержащихся в двойных или одинарных кавычках.

  • `0 - NULL (не эквивалентен $null)
  • `a - Предупреждение
  • `b - Backspace
  • `e - ESC
  • `f - Перевод страницы
  • `n - Новая строка
  • `r - Возврат каретки
  • `t - Горизонтальная табуляция
  • `u{x} - Escape-последовательность Юникода
  • `v - Вертикальная табуляция