Sdílet prostřednictvím


O analýze

KRÁTKÝ POPIS

Popisuje, jak prostředí PowerShell analyzuje příkazy.

DLOUHÝ POPIS

Když na příkazovém řádku zadáte příkaz, PowerShell rozdělí text příkazu do řady segmentů s názvem "tokeny" a pak určí, jak se má interpretovat tokeny.

Pokud například zadáte:

Zápis – kniha hostitelů

PowerShell ukončí následující příkaz na dvě tokeny, write-host a Book a každý token se interpretuje nezávisle.

Při zpracování příkazu funguje analyzátor PowerShellu v režimu výrazu nebo v režimu argumentu:

  • V režimu výrazu musí být hodnoty řetězce znaků obsaženy v uvozovkách. Čísla, která nejsou uzavřena v uvozovkách, jsou považována za číselné hodnoty (nikoli jako řady znaků).

  • V režimu argumentu je každá hodnota považována za rozšiřitelný řetězec, pokud nezačíná jedním z následujících speciálních znaků: dolar Sign ( $ ), Sign (@), apostrof ( ' ), dvojité uvozovky ( " ) nebo levou závorku ( ( ).

Pokud předchází jeden z těchto znaků, hodnota je považována za výraz hodnoty.

Následující tabulka uvádí několik příkladů příkazů zpracovaných v režimu výrazů a v režimu argumentů a výsledky, které tyto příkazy vygenerovaly.

Příklad Mode Výsledek
2 + 2 Výraz 4 (celé číslo)
Zápis-výstup 2 + 2 Argument "2 + 2" (řetězec)
Zápis-výstup (2 + 2) Výraz 4 (celé číslo)
$a = 2 + 2 Výraz $a = 4 (celé číslo)
Zápis-výstup $a Výraz 4 (celé číslo)
Zápis-výstup $a/H Argument 4/H (řetězec)

Každý token může být interpretován jako nějaký druh typu objektu, například logická hodnota nebo řetězec. PowerShell se pokusí určit typ objektu z výrazu. Typ objektu závisí na typu parametru, který očekává příkaz, a na tom, jestli PowerShell ví, jak argument převést na správný typ. Následující tabulka ukazuje několik příkladů typů přiřazených k hodnotám vráceným výrazy.

Příklad Mode Výsledek
Zápis – výstup! 1 Argument "! 1" (řetězec)
Zapisovat – výstup (! 1) expression False (logická hodnota)
Write-Output (2) expression 2 (celé číslo)

Symbol stop-analyze (--%), představený v PowerShellu 3,0, směruje prostředí PowerShell, aby nedokázal interpretovat vstup jako příkazy nebo výrazy PowerShellu.

Při volání spustitelného programu v prostředí PowerShell umístěte symbol stop-Analyze před argumenty programu. Tato technika je mnohem jednodušší než použití řídicích znaků, aby se zabránilo mylnému výkladu.

Když dojde k zastavení symbolu stop-analyze, PowerShell zpracovává zbývající znaky v řádku jako literál. Jediným výkladem, který provede, je nahradit hodnoty proměnných prostředí, které používají standardní notaci Windows, jako je například% USERPROFILE%.

Symbol stop-Analyze je platný pouze do dalšího nového řádku nebo znaku kanálu. Nemůžete použít znak pokračování () pro prodloužení jeho efektu nebo použití oddělovače příkazů (;) ukončení jeho efektu.

Například následující příkaz volá program Icacls.

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

Chcete-li spustit tento příkaz v prostředí PowerShell 2,0, je nutné použít řídicí znaky, aby prostředí PowerShell nedokázalo interpretovat závorky.

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

Počínaje PowerShellem 3,0 můžete použít symbol stop-Analyze.

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

PowerShell pošle následující řetězec příkazu Icacls programu:

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

VIZ TAKÉ

about_Command_Syntax