Partager via


À propos de l’analyse syntaxique

DESCRIPTION COURTE

Décrit comment PowerShell analyse les commandes.

DESCRIPTION DÉTAILLÉE

Lorsque vous entrez une commande à l’invite de commande, PowerShell divise le texte de la commande en une série de segments appelés « jetons », puis détermine comment interpréter chaque « jeton ».

Par exemple, si vous tapez :

Write-Host livre

PowerShell divise la commande suivante en deux jetons, « Write-Host » et « book », et interprète chaque jeton indépendamment.

Lors du traitement d’une commande, l’analyseur PowerShell fonctionne en mode expression ou en mode argument :

  • En mode expression, les valeurs de chaîne de caractères doivent être entre guillemets. Les nombres qui ne sont pas placés entre guillemets sont traités comme des valeurs numériques (plutôt que comme une série de caractères).

  • En mode argument, chaque valeur est traitée comme une chaîne extensible, sauf si elle commence par l’un des caractères spéciaux suivants : signe dollar ($), signe arobase (@), guillemet simple ('), guillemet double ("), ou parenthèse ouvrante (().

Si elle est précédée de l’un de ces caractères, la valeur est traitée comme une expression de valeur.

Le tableau suivant fournit plusieurs exemples de commandes traitées en mode expression et en mode argument, ainsi que les résultats produits par ces commandes.

Exemple : mode de fonctionnement Résultat
2+2 L'Expression 4 (entier)
Write-Output 2+2 Raisonnement "2+2" (chaîne)
Write-Output (2+2) L'Expression 4 (entier)
$a = 2+2 L'Expression $a = 4 (entier)
Write-Output $a L'Expression 4 (entier)
Write-Output $a/H Raisonnement « 4/H » (chaîne)

Chaque jeton peut être interprété comme une sorte de type d’objet, tel qu’un booléen ou une chaîne. PowerShell tente de déterminer le type d’objet de l’expression. Le type d’objet dépend du type de paramètre attendu par une commande et de savoir si PowerShell sait comment convertir l’argument en type correct. Le tableau suivant présente plusieurs exemples de types attribués aux valeurs retournées par les expressions.

Exemple : mode de fonctionnement Résultat
Write-Output !1 argument "!1" (chaîne de caractères)
Write-Output ( !1) expression Faux (booléen)
Write-Output (2) expression 2 (entier)

Le symbole d’arrêt de l’analyse (--%), introduit dans PowerShell 3.0, indique à PowerShell de s’abstenir d’interpréter les entrées comme des commandes ou des expressions PowerShell.

Lors de l’appel d’un programme exécutable dans PowerShell, placez le symbole d’arrêt de l’analyse avant les arguments du programme. Cette technique est beaucoup plus facile que d’utiliser des caractères d’échappement pour éviter une mauvaise interprétation.

Lorsqu’il rencontre un symbole d'arrêt d'analyse, PowerShell traite les caractères restants de la ligne comme du texte brut. La seule interprétation qu’il effectue est de substituer des valeurs aux variables d’environnement qui utilisent la notation Windows standard, telles que %USERPROFILE%.

Le symbole d’analyse d’arrêt n’est effectif que jusqu’au prochain caractère de nouvelle ligne ou de pipeline. Vous ne pouvez pas utiliser un caractère de continuation (') pour étendre son effet ou utiliser un délimiteur de commande (;) pour mettre fin à son effet.

Par exemple, la commande suivante appelle le programme Icacls.

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

Pour exécuter cette commande dans PowerShell 2.0, vous devez utiliser des caractères d’échappement pour empêcher PowerShell de mal interpréter les parenthèses.

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

À partir de PowerShell 3.0, vous pouvez utiliser le symbole d’arrêt de l’analyse.

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

PowerShell envoie la chaîne de commande suivante au programme Icacls :

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

VOIR AUSSI

à_propos_de_la_syntaxe_de_commande