Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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