about_Special_Characters

Krótki opis

Opisuje sekwencje znaków specjalnych, które kontrolują sposób, w jaki program PowerShell interpretuje następne znaki w sekwencji.

Długi opis

Program PowerShell obsługuje zestaw sekwencji znaków specjalnych, które są używane do reprezentowania znaków, które nie są częścią standardowego zestawu znaków. Sekwencje są powszechnie znane jako sekwencje ucieczki.

Sekwencje ucieczki zaczynają się od znaku backtick, znanego jako akcent grobowy (ASCII 96) i są uwzględniane wielkość liter. Znak backtick może być również określany jako znak ucieczki.

Sekwencje ucieczki są interpretowane tylko wtedy, gdy znajdują się w ciągach dwucytowych (").

Program PowerShell rozpoznaje następujące sekwencje ucieczki:

Sequence Opis
`0 Null
`a Alerty
`b Backspace
`e Escape
`f Źródło danych formularza
`n Nowy wiersz
`r Powrót karetki
`t Karta pozioma
`u{x} Sekwencja ucieczki Unicode
`v Karta pionowa

Program PowerShell ma również specjalny token do oznaczania miejsca, w którym chcesz zatrzymać analizowanie. Wszystkie znaki, które są zgodne z tym tokenem, są używane jako wartości literału, które nie są interpretowane.

Tokeny analizy specjalnej:

Sequence Opis
-- Traktuj pozostałe wartości jako argumenty, które nie są parametrami
--% Zatrzymaj analizowanie dowolnych elementów, które następuje

Null ('0)

Znak o wartości null (`0) jest wyświetlany jako puste miejsce w danych wyjściowych programu PowerShell. Ta funkcja umożliwia używanie programu PowerShell do odczytywania i przetwarzania plików tekstowych, które używają znaków null, takich jak zakończenie ciągu lub wskaźniki zakończenia rekordu. Znak specjalny o wartości null nie jest odpowiednikiem zmiennej $null , która przechowuje wartość null .

Alert ('a)

Znak alertu (`a) wysyła sygnał sygnału sygnałowego do osoby mówiącej komputera. Możesz użyć tego znaku, aby ostrzec użytkownika o zbliżającej się akcji. Poniższy przykład wysyła dwa sygnały sygnałów sygnałów sygnału sygnału sygnału sygnałowego komputera lokalnego do głośnika komputera lokalnego.

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

Backspace ('b)

Znak backspace (`b) przenosi kursor z powrotem o jeden znak, ale nie usuwa żadnych znaków.

Przykład zapisuje kopię zapasową wyrazu, a następnie przesuwa kursor z powrotem dwa razy. Następnie w nowej pozycji zapisuje spację, po której następuje słowo .

"backup`b`b out"
back out

Ucieczka ('e)

Znak ucieczki (`e) jest najczęściej używany do określania sekwencji ucieczki terminalu wirtualnego (ANSI escape sequence), który modyfikuje kolor tekstu i innych atrybutów tekstowych, takich jak pogrubienie i podkreślenie. Te sekwencje mogą być również używane do pozycjonowania i przewijania kursora. Host programu PowerShell musi obsługiwać sekwencje terminali wirtualnych. Możesz sprawdzić wartość logiczną elementu , $Host.UI.SupportsVirtualTerminal aby określić, czy te sekwencje ANSI są obsługiwane.

Aby uzyskać więcej informacji na temat sekwencji ucieczki ANSI, zobacz ANSI_escape_code.

Poniższy przykład generuje tekst z zielonym kolorem pierwszego planu.

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

Źródło danych formularza ('f)

Znak kanału informacyjnego formularza (`f) to instrukcja drukowania, która wysunie bieżącą stronę i kontynuuje drukowanie na następnej stronie. Znak kanału informacyjnego formularza ma wpływ tylko na wydrukowane dokumenty. Nie ma to wpływu na dane wyjściowe ekranu.

Nowy wiersz ('n)

Znak nowego wiersza (`n) wstawia podział wiersza bezpośrednio po znaku.

W tym przykładzie pokazano, jak użyć nowego znaku wiersza do utworzenia podziałów wierszy w poleceniu 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.

Powrót karetki ('r)

Znak powrotu karetki (`r) przenosi kursor wyjściowy na początek bieżącego wiersza i kontynuuje zapisywanie. Wszelkie znaki w bieżącym wierszu są zastępowane.

W tym przykładzie tekst przed powrotem karetki zostanie zastąpiony.

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

Zwróć uwagę, że tekst, zanim `r znak nie zostanie usunięty, zostanie zastąpiony.

I want this text instead written.

Karta pozioma (nie)

Znak karty poziomej (`t) przechodzi do następnego zatrzymania karty i kontynuuje zapisywanie w tym momencie. Domyślnie konsola programu PowerShell ma tabulator na każdym ósmym miejscu.

Ten przykład wstawia dwie karty między każdą kolumną.

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

Znak Unicode ('u{x})

Sekwencja unikowa Unicode (`u{x}) umożliwia określenie dowolnego znaku Unicode przez reprezentację szesnastkową punktu kodu. Obejmuje to znaki Unicode powyżej podstawowej płaszczyzny wielojęzycznej (>0xFFFF), która zawiera znaki emoji, takie jak kciuki w górę (`u{1F44D}). Sekwencja unikowa Unicode wymaga co najmniej jednej cyfry szesnastkowej i obsługuje maksymalnie sześć cyfr szesnastkowe. Maksymalna wartość szesnastkowa dla sekwencji to 10FFFF.

W tym przykładzie jest zwracany symbol strzałki w górę w dół (↕).

"`u{2195}"

Karta pionowa ('v)

Znak karty pionowej (`v) przechodzi do następnego pionowego zatrzymania karty i zapisuje pozostałe dane wyjściowe w tym momencie. Renderowanie karty pionowej jest zależne od urządzenia i terminalu.

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

W poniższych przykładach pokazano renderowane dane wyjściowe karty pionowej w niektórych typowych środowiskach.

Aplikacja hosta konsoli systemu Windows interpretuje (`v) jako znak specjalny bez dodatkowego odstępu.

There is a vertical tab♂between the words.

Terminal Windows renderuje znak pionowej karty jako znak powrotu karetki i kanału informacyjnego wiersza. Pozostałe dane wyjściowe są drukowane na początku następnego wiersza.

There is a vertical tab
between the words.

Na drukarkach lub w konsolach opartych na systemie unix znak tabulatora w pionie przechodzi do następnego wiersza i zapisuje pozostałe dane wyjściowe w tym momencie.

There is a vertical tab
                       between the words.

Token końca parametrów (--)

Token końca parametrów (--) wskazuje, że wszystkie argumenty następujące po nim mają być przekazywane w ich rzeczywistej formie, jakby cudzysłowy zostały umieszczone wokół nich. Na przykład przy użyciu -- polecenia można wyświetlić ciąg -InputObject bez użycia cudzysłowów lub interpretowania go jako parametru:

Write-Output -- -InputObject
-InputObject

Jest to konwencja określona w specyfikacji powłoki POSIX i narzędzi.

Zatrzymaj analizowanie tokenu (--%)

Token zatrzymania analizowania (--%) uniemożliwia programowi PowerShell interpretowanie ciągów jako poleceń i wyrażeń programu PowerShell. Dzięki temu te ciągi mogą być przekazywane do innych programów do interpretacji.

Umieść token stop-parsing po nazwie programu i przed argumentami programu, które mogą powodować błędy.

W tym przykładzie Icacls polecenie używa tokenu stop-parsing.

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

Program PowerShell wysyła następujący ciąg do .Icacls

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

Oto inny przykład. Funkcja showArgs zwraca przekazane do niej wartości. W tym przykładzie przekazujemy zmienną o nazwie $HOME do funkcji dwa razy.

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

showArgs $HOME --% $HOME

W danych wyjściowych widać, że dla pierwszego parametru zmienna $HOME jest interpretowana przez program PowerShell, aby wartość zmiennej została przekazana do funkcji. Drugie użycie metody $HOME następuje po tokenie zatrzymania analizowania, więc ciąg "$HOME" jest przekazywany do funkcji bez interpretacji.

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

Aby uzyskać więcej informacji na temat tokenu zatrzymywania analizowania, zobacz about_Parsing.

Zobacz też