Сведения о специальных символах

Краткое описание

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

Подробное описание

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

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

Escape-последовательности интерпретируются только в том случае, если они содержатся в строках с двойными кавычками (").

PowerShell распознает следующие escape-последовательности:

Последовательность Описание
`0 Null
`a Предупреждение
`b Отмена
`e ESC
`f Перевод страницы
`n Новая строка
`r Возврат каретки
`t Горизонтальная табуляция
`u{x} Escape-последовательность Юникода
`v Вертикальная табуляция

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

Специальный маркер синтаксического анализа:

Последовательность Описание
--% Прекратить анализ всего, что следует

Null ('0)

Символ NULL (`0) отображается в выходных данных PowerShell в виде пустого пробела. Эта функция позволяет использовать PowerShell для чтения и обработки текстовых файлов, которые используют символы NULL, такие как завершение строк или индикаторы завершения записи. Специальный символ NULL не эквивалентен переменной $null , в которой хранится значение NULL .

Оповещение ('a)

Символ оповещения (`a) отправляет звуковой сигнал динамику компьютера. Этот символ можно использовать для предупреждения пользователя о предстоящем действии. В следующем примере два звуковых сигнала передаются динамику локального компьютера.

for ($i = 0; $i -le 1; $i++){"`a"}

Backspace ('b)

Символ backspace (`b) перемещает курсор назад на один символ, но не удаляет символы.

В примере записывается слово backup , а затем курсор перемещается назад дважды. Затем в новой позиции записывает пробел, за которым следует слово.

"backup`b`b out"
back out

Escape ('e)

Escape-символ (`e) чаще всего используется для указания последовательности виртуальных терминалов (escape-последовательности ANSI), которая изменяет цвет текста и другие атрибуты текста, такие как полужирный шрифт и подчеркивание. Эти последовательности также можно использовать для позиционирования курсора и прокрутки. Узел PowerShell должен поддерживать последовательности виртуальных терминалов. Можно проверка логическое значение , $Host.UI.SupportsVirtualTerminal чтобы определить, поддерживаются ли эти последовательности ANSI.

Дополнительные сведения о escape-последовательностях ANSI см. в разделе ANSI_escape_code.

В следующем примере выводится текст с зеленым цветом переднего плана.

$fgColor = 32 # green
"`e[${fgColor}mGreen text`e[0m"
Green text

Веб-канал форм (f)

Символ веб-канала формы (`f) — это инструкция печати, которая извлекает текущую страницу и продолжает печать на следующей странице. Символ веб-канала формы влияет только на печатные документы. Это не влияет на выходные данные экрана.

Новая строка (n)

Символ новой строки (`n) вставляет разрыв строки сразу после символа.

В этом примере показано, как использовать новый символ строки для создания разрывов строк в команде Write-Host .

"There are two line breaks to create a blank line`n`nbetween the words."
There are two line breaks to create a blank line

between the words.

Возврат каретки ('r)

Символ возврата каретки (`r) перемещает выходной курсор в начало текущей строки и продолжает запись. Все символы в текущей строке перезаписываются.

В этом примере текст перед возвратом каретки перезаписывается.

Write-Host "These characters are overwritten.`rI want this text instead "

Обратите внимание, что текст перед удалением `r символа перезаписывается.

I want this text instead written.

Горизонтальная вкладка (не)

Символ горизонтальной табуляции (`t) перемещается к следующей точке табуляции и продолжает запись в этот момент. По умолчанию консоль PowerShell имеет остановку табуляции на каждом восьмом пространстве.

В этом примере между столбцами вставляется две вкладки.

"Column1`t`tColumn2`t`tColumn3"
Column1         Column2         Column3

Символ Юникода ('u{x})

Escape-последовательность Юникода (`u{x}) позволяет указать любой символ Юникода с помощью шестнадцатеричного представления его кодовой точки. Сюда входят символы Юникода над базовой многоязыковой плоскостью (>0xFFFF), которая включает символы эмодзи, такие как символ большого пальца вверх (`u{1F44D}). Escape-последовательность Юникода требует по крайней мере одной шестнадцатеричной цифры и поддерживает до шести шестнадцатеричных цифр. Максимальное шестнадцатеричное значение для последовательности — 10FFFF.

В этом примере выводится символ стрелки вниз ( ↕).

"`u{2195}"

Вертикальная вкладка ('v)

Символ горизонтальной табуляции (`v) перемещается к следующей вертикальной точке табуляции и записывает оставшиеся выходные данные в этой точке. Это не влияет на консоль Windows по умолчанию.

Write-Host "There is a vertical tab`vbetween the words."

В следующем примере показаны выходные данные, которые можно получить на принтере или в другом узле консоли.

There is a vertical tab
                       between the words.

Маркер остановки синтаксического анализа (--%)

Маркер остановки анализа (--%) не позволяет PowerShell интерпретировать строки как команды и выражения PowerShell. Это позволяет передавать эти строки в другие программы для интерпретации.

Поместите маркер остановки анализа после имени программы и перед аргументами программы, которые могут привести к ошибкам.

В этом примере Icacls команда использует маркер остановки синтаксического анализа.

icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F

PowerShell отправляет следующую строку в Icacls.

X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

Вот другой пример. Функция showArgs выводит переданные ей значения. В этом примере мы дважды передадим переменную с именем $HOME в функцию .

function showArgs {
  "`$args = " + ($args -join '|')
}

showArgs $HOME --% $HOME

В выходных данных видно, что для первого параметра переменная $HOME интерпретируется PowerShell так, что значение переменной передается в функцию . Второе использование происходит после маркера $HOME остановки синтаксического анализа, поэтому строка "$HOME" передается в функцию без интерпретации.

$args = C:\Users\username|--%|$HOME

Дополнительные сведения о маркере остановки синтаксического анализа см. в разделе about_Parsing.

См. также раздел

about_Quoting_Rules