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ą często nazywane sekwencjami 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 podwójnych (").

Program PowerShell rozpoznaje następujące sekwencje ucieczki:

Sequence opis
`0 Null (zero)
`a Alerty
`b Backspace
`e Ucieczka (dodana w programie PowerShell 6)
`f Źródło danych formularzy
`n Nowy wiersz
`r Powrót karetki
`t Karta Pozioma
`u{x} Sekwencja ucieczki Unicode (dodana w programie PowerShell 6)
`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 wszystkich elementów, które następują poniżej

Null ('0)

Znak 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łu dźwiękowego do osoby mówiącej komputera. Możesz użyć tego znaku, aby ostrzec użytkownika o zbliżającej się akcji. W poniższym przykładzie do głośnika komputera lokalnego są wysyłane dwa sygnały sygnału sygnału sygnału sygnału.

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

Backspace ('b)

Znak backspace (`b) przenosi kursor z powrotem 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 out.

"backup`b`b out"
back out

Ucieczka ('e)

Uwaga

Ten znak specjalny został dodany w programie PowerShell 6.0.

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

Aby uzyskać więcej informacji na temat sekwencji ucieczki ANSI, zobacz artykuł dotyczący kodu ucieczki ANSI w Wikipedii.

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

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

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

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

Nowy wiersz ('n)

Nowy znak wiersza (`n) wstawia podział wiersza bezpośrednio po znaku.

W tym przykładzie pokazano, jak używać nowego znaku wiersza do tworzenia 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. Wszystkie znaki w bieżącym wierszu są zastępowane.

W tym przykładzie tekst przed zwróceniem karetki zostanie zastąpiony.

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

Zwróć uwagę, że tekst przed usunięciem `r znaku 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 zatrzymanie karty co ósmy obszar.

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

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

Znak Unicode ('u{x})

Uwaga

Ten znak specjalny został dodany w programie PowerShell 6.0.

Sekwencja ucieczki Unicode (`u{x}) umożliwia określenie dowolnego znaku Unicode za pomocą szesnastkowej reprezentacji punktu kodu. Obejmuje to znaki Unicode powyżej podstawowej płaszczyzny wielojęzycznej (>0xFFFF), która zawiera znaki emoji, takie jak kciuk w górę (`u{1F44D}). Sekwencja ucieczki 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 pionowy znak tabulacji 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 karty pionowej przechodzi do następnego wiersza i zapisuje pozostałe dane wyjściowe w tym momencie.

There is a vertical tab
                       between the words.

Kontynuacja wiersza

Znak backtick może być również używany na końcu wiersza jako sygnał do analizatora programu PowerShell, który polecenie będzie kontynuowane w następnym wierszu. Aby uzyskać więcej informacji, zobacz about_Parsing.

Token końca parametrów (--)

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

Write-Output -- -InputObject
-InputObject

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

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 zatrzymania analizy po nazwie programu i przed argumentami programu, które mogą powodować błędy.

W tym przykładzie Icacls polecenie używa tokenu zatrzymania analizowania.

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

W tym drugim przykładzie przekazujemy zmienną $HOMEcmd.exe /c echo do polecenia dwa razy.

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

Dane wyjściowe pokazują, że pierwsze wystąpienie $HOME klasy jest interpretowane przez program PowerShell, aby wartość zmiennej została przekazana do cmdelementu . Drugie wystąpienie $HOME jest dostępne po tokenie zatrzymania analizowania, więc jest przekazywane jako ciąg literału.

C:\Users\username  $HOME

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

Zobacz też