about_Special_Characters

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

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

Длинное описание

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

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

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

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

Последовательность Описание
`0 Недействительный
`a Тревога
`b Возврат
`e Escape (добавлено в PowerShell 6)
`f Веб-канал формы
`n Новая строка
`r Возврат каретки
`t Горизонтальная вкладка
`u{x} Escape-последовательность Юникода (добавлена в PowerShell 6)
`v Вертикальная вкладка

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

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

Последовательность Описание
-- Обработка оставшихся значений в качестве аргументов не параметров
--% Остановите синтаксический анализ всего следующего
~ Тильда

Null ('0)

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

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

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

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

Backspace ('b)

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

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

"backup`b`b out"
back out

Escape ('e)

Заметка

Этот специальный символ был добавлен в PowerShell 6.0.

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

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

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

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

Заметка

Этот специальный символ был добавлен в PowerShell 6.0.

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

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

"`u{2195}"

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

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

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

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

Ведущее приложение консоли Windows интерпретирует (`v) как специальный символ без дополнительных интервалов.

There is a vertical tab♂between the words.

Терминал Windows отображает символ вертикальной вкладки в виде возврата каретки и канала строки. Остальная часть выходных данных печатается в начале следующей строки.

There is a vertical tab
between the words.

На принтерах или в консоли на основе Unix символ вертикальной вкладки переходит к следующей строке и записывает оставшиеся выходные данные в этой точке.

There is a vertical tab
                       between the words.

Продолжение строки

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

Маркер конца параметров (--)

Маркер конца параметров (--) указывает, что все аргументы, следующие за ним, должны быть переданы в их фактической форме, как будто двойные кавычки были помещены вокруг них. Например, с помощью -- можно вывести строку -InputObject без использования кавычки или интерпретации в качестве параметра:

Write-Output -- -InputObject
-InputObject

Это соглашение, указанное в спецификации оболочки POSIX и служебных программ.

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

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

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

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

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

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

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

Во втором примере переменная $HOME передается команде cmd.exe /c echo дважды.

cmd.exe /c echo $HOME --% $HOME

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

C:\Users\username  $HOME

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

Тильде (~)

Символ тильды (~) имеет особое значение в PowerShell. При использовании с командами PowerShell в начале пути PowerShell расширяет символ тильды в домашнем каталоге пользователя. Если вы используете символ тильды в любом другом месте пути, он рассматривается как литеральный символ.

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

См. также