Sdílet prostřednictvím


about_Special_Characters

Krátký popis

Popisuje speciální sekvence znaků, které řídí, jak PowerShell interpretuje další znaky v sekvenci.

Dlouhý popis

PowerShell podporuje sadu speciálních sekvencí znaků, které se používají k reprezentaci znaků, které nejsou součástí standardní znakové sady. Sekvence se běžně označují jako řídicí sekvence.

Řídicí sekvence začínají zpětným znakem, kterému se říká zvýraznění hrobu (ASCII 96) a rozlišují se malá a velká písmena. Znak zpětného zápisu lze také označovat jako řídicí znak.

Řídicí sekvence se interpretují pouze v případech, kdy jsou obsaženy v řetězcích s dvojitou uvozovou sadou (").

PowerShell rozpozná tyto řídicí sekvence:

Sequence Popis
`0 Null
`a Výstrahy
`b Backspace
`e Řídicí znak (přidaný v PowerShellu 6)
`f Informační kanál formuláře
`n Nový řádek
`r Návrat na začátek řádku
`t Horizontální tabulátor
`u{x} Řídicí sekvence Unicode (přidaná v PowerShellu 6)
`v Vertikální tabulátor

PowerShell má také speciální token, který označuje, kde se má analýza zastavit. Všechny znaky, které následují za tímto tokenem, se používají jako hodnoty literálů, které nejsou interpretovány.

Speciální parsovací tokeny:

Sequence Popis
-- Zpracování zbývajících hodnot jako argumentů, nikoli parametrů
--% Přestaňte parsovat cokoli, co následuje
~ Tilda

Null ('0)

Znak null (`0) se ve výstupu PowerShellu zobrazí jako prázdné místo. Tato funkce umožňuje používat PowerShell ke čtení a zpracování textových souborů, které používají znaky null, například ukončení řetězce nebo indikátory ukončení záznamu. Speciální znak null není ekvivalentem $null proměnné, která ukládá hodnotu null .

Upozornění ('a)

Znak výstrahy (`a) odešle signál pípnutí do reproduktoru počítače. Tento znak můžete použít k upozornění uživatele na nadcházející akci. Následující příklad odešle dva signály pípnutí do reproduktoru místního počítače.

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

Backspace ('b)

Znak backspace (`b) přesune kurzor o jeden znak zpět, ale neodstraní žádné znaky.

Příklad zapíše zálohu slova a pak přesune kurzor zpět dvakrát. Potom na nové pozici napíše mezeru následovanou slovem ven.

"backup`b`b out"
back out

Escape ('e)

Poznámka:

Tento speciální znak byl přidán v PowerShellu 6.0.

Řídicí znak (`e) se nejčastěji používá k určení sekvence virtuálního terminálu (řídicí sekvence ANSI), která upravuje barvu textu a další atributy textu, jako je tučné písmo a podtržení. Tyto sekvence lze také použít pro umístění kurzoru a posouvání. Hostitel PowerShellu musí podporovat sekvence virtuálních terminálů. Můžete zkontrolovat logickou hodnotu $Host.UI.SupportsVirtualTerminal a zjistit, jestli jsou tyto sekvence ANSI podporované.

Další informace o řídicích sekvencích ANSI najdete v článku řídicího kódu ANSI na Wikipedii.

Následující příklad vypíše text se zelenou barvou popředí.

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

Informační kanál formuláře ('f)

Znak informačního kanálu formuláře`f je instrukce tisku, která vysune aktuální stránku a pokračuje v tisku na další stránce. Znak informačního kanálu formuláře má vliv jenom na tištěné dokumenty. Nemá vliv na výstup obrazovky.

Nový řádek ('n)

Znak nového řádku (`n) vloží konec řádku hned za znak.

Tento příklad ukazuje, jak pomocí nového znaku řádku vytvořit konce řádků v Write-Host příkazu.

"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.

Návrat na začátek řádku ('r)

Znak návratu řádku (`r) přesune výstupní kurzor na začátek aktuálního řádku a pokračuje v zápisu. Všechny znaky na aktuálním řádku se přepíší.

V tomto příkladu se text před vrácením na začátek řádku přepíše.

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

Všimněte si, že text před odstraněním znaku `r se přepíše.

I want this text instead written.

Vodorovná karta (ne)

Vodorovný znak tabulátoru`t () přejde na další zarážku tabulátoru a pokračuje v psaní v tomto okamžiku. Ve výchozím nastavení má konzola PowerShellu zarážku tabulátoru v každé osmé mezerě.

Tento příklad vloží dvě karty mezi každý sloupec.

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

Znak Unicode ('u{x})

Poznámka:

Tento speciální znak byl přidán v PowerShellu 6.0.

Řídicí sekvence Unicode (`u{x}) umožňuje zadat libovolný znak Unicode šestnáctkovým znázorněním jeho bodu kódu. To zahrnuje znaky Unicode nad základní vícejazyčnou rovinou (>0xFFFF), která obsahuje znaky emoji, jako je například znak palce nahoru (`u{1F44D}). Řídicí sekvence Unicode vyžaduje alespoň jednu šestnáctkovou číslici a podporuje až šest šestnáctkových číslic. Maximální šestnáctková hodnota sekvence je 10FFFF.

Tento příklad vypíše symbol šipky nahoru (↕) dolů.

"`u{2195}"

Svislá karta ('v)

Svislý znak tabulátoru`v () přejde na další svislou zarážku tabulátoru a zapíše zbývající výstup v tomto okamžiku. Vykreslování svislé karty je závislé na zařízení a terminálu.

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

Následující příklady ukazují vykreslený výstup svislé karty v některých běžných prostředích.

Hostitelská aplikace konzoly systému Windows interpretuje (`v) jako speciální znak bez přidání mezer navíc.

There is a vertical tab♂between the words.

Terminál Windows vykresluje svislý znak tabulátoru jako návrat na začátek řádku a odřádkování. Zbytek výstupu se vytiskne na začátku dalšího řádku.

There is a vertical tab
between the words.

Na tiskárnách nebo v konzolách se systémem Unix se svislý znak tabulátoru posune na další řádek a zapíše zbývající výstup v tomto okamžiku.

There is a vertical tab
                       between the words.

Pokračování řádku

Znak backtick lze také použít na konci řádku jako signál analyzátoru PowerShellu, že příkaz pokračuje na dalším řádku. Další informace najdete v tématu about_Parsing.

Token koncového parametru (--)

Token konce parametrů (--) označuje, že všechny argumenty, které následují, mají být předány ve skutečné podobě, jako by se kolem nich umístily dvojité uvozovky. Když například použijete -- výstup řetězce -InputObject bez použití uvozovek nebo ho interpretujete jako parametr:

Write-Output -- -InputObject
-InputObject

Toto je konvence zadaná ve specifikaci prostředí POSIX a nástrojů.

Zastavení analýzy tokenu (--%)

Token stop-parsing (--%) zabraňuje PowerShellu interpretovat řetězce jako příkazy a výrazy PowerShellu. To umožňuje předání těchto řetězců jiným programům pro interpretaci.

Za název programu a před argumenty programu, které můžou způsobit chyby, umístěte token stop-parsing.

V tomto příkladu Icacls příkaz používá token stop-parsing.

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

PowerShell odešle následující řetězec do Icacls.

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

V tomto druhém příkladu předáme proměnnou $HOME cmd.exe /c echo do příkazu dvakrát.

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

Výstup ukazuje, že první instance $HOME je interpretována v PowerShellu tak, aby hodnota proměnné byla předána cmd. Druhá instance $HOME přichází po tokenu stop-parsing, takže se předává jako literálový řetězec.

C:\Users\username  $HOME

Další informace o tokenu zastavení analýzy najdete v tématu about_Parsing.

Tilda (~)

Znak tilda (~) má v PowerShellu zvláštní význam. Když se používá s příkazy PowerShellu na začátku cesty, PowerShell rozbalí znak tilda do domovského adresáře uživatele. Pokud použijete znak vlnovky kdekoli jinde v cestě, považuje se za literální znak.

Další informace o tokenu zastavení analýzy najdete v tématu about_Parsing.

Viz také