about_Special_Characters
Краткое описание
Описывает специальные последовательности символов, которые определяют, как PowerShell интерпретирует следующие символы в последовательности.
Подробное описание
PowerShell поддерживает набор специальных последовательностей символов, которые используются для представления символов, не входящих в стандартный набор символов. Последовательности обычно называются escape-последовательности.
Escape-последовательности начинаются с символа обратного удара, известного как серьезный акцент (ASCII 96), и чувствительны к регистру. Символ обратного тикала также можно называть escape-символом.
Escape-последовательности интерпретируются только в том случае, если они содержатся в строках с двойными кавычками ("
).
PowerShell распознает следующие escape-последовательности:
Последовательность | Описание |
---|---|
`0 |
Null |
`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
, в которой хранится значение NULL .
Оповещение ('a)
Символ оповещения (`a
) отправляет звуковой сигнал динамику компьютера.
Этот символ можно использовать для предупреждения пользователя о предстоящем действии. В следующем примере два звуковых сигнала передаются динамику локального компьютера.
for ($i = 0; $i -le 1; $i++){"`a"}
Backspace ('b)
Символ backspace (`b
) перемещает курсор назад на один символ, но не удаляет символы.
В примере записывается слово backup , а затем курсор перемещается назад дважды. Затем в новой позиции записывает пробел, за которым следует слово.
"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.
Продолжение строки
Символ обратного символа также можно использовать в конце строки в качестве сигнала средству синтаксического анализа 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.