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

Основные

  • # - комментарии

  • <#...#> - комментарий с разделителями

  • ` - указание спец. символов внутри кавычек

  • - (тире) - ставится перед названиями параметров функций/командлетов/буквенных операторов

  • % - математический оператор возвращающий остаток от деления (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] - проверка типов

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

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

  • -$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 - Вертикальная табуляция

Last updated