about_Operator_Precedence
Description courte
Listes les opérateurs PowerShell dans l’ordre de priorité.
Description longue
Les opérateurs PowerShell vous permettent de construire des expressions simples, mais puissantes. Cette rubrique répertorie les opérateurs dans l’ordre de priorité. L’ordre de priorité est l’ordre dans lequel PowerShell évalue les opérateurs lorsque plusieurs opérateurs apparaissent dans la même expression.
Lorsque les opérateurs ont une précédence égale, PowerShell les évalue de gauche à droite à mesure qu’ils apparaissent dans l’expression. Les exceptions sont les opérateurs d’affectation, les opérateurs de cast et les opérateurs de négation (!
, -not
, -bnot
), qui sont évalués de droite à gauche.
Vous pouvez utiliser des boîtiers, tels que des parenthèses, pour remplacer l’ordre de priorité standard et forcer PowerShell à évaluer la partie fermée d’une expression avant une partie non fermée.
Dans la liste suivante, les opérateurs sont répertoriés dans l’ordre dans lequel ils sont évalués. Les opérateurs sur la même ligne ou dans le même groupe ont la même priorité.
La colonne Opérateur répertorie les opérateurs. La colonne Référence répertorie la rubrique d’aide PowerShell dans laquelle l’opérateur est décrit. Pour afficher la rubrique, tapez get-help <topic-name>
.
OPERATOR | RÉFÉRENCE |
---|---|
$() @() () @{} |
about_Operators |
. ?. (accès aux membres) |
about_Operators |
:: (statique) |
about_Operators |
[0] ?[0] (opérateur d’index) |
about_Operators |
[int] (opérateurs de cast) |
about_Operators |
-split (unaire) |
about_Split |
-join (unaire) |
about_Join |
, (opérateur virgule) |
about_Operators |
++ -- |
about_Assignment_Operators |
! -not |
about_Logical_Operators |
.. (opérateur de plage) |
about_Operators |
-f (opérateur de format) |
about_Operators |
- (unaire/négatif) |
about_Arithmetic_Operators |
* / % |
about_Arithmetic_Operators |
+ - |
about_Arithmetic_Operators |
Le groupe d’opérateurs suivant a la même priorité. Leurs variantes respectant la casse et explicitement insensibles à la casse ont la même priorité.
OPERATOR | RÉFÉRENCE |
---|---|
-split (binaire) |
about_Split |
-join (binaire) |
about_Join |
-is -isnot -as |
about_Type_Operators |
-eq -ne -gt -ge -lt -le |
about_Comparison_Operators |
-like -notlike |
about_Comparison_Operators |
-match -notmatch |
about_Comparison_Operators |
-in -notIn |
about_Comparison_Operators |
-contains -notContains |
about_Comparison_Operators |
-replace |
about_Comparison_Operators |
La liste reprend ici avec les opérateurs suivants dans l’ordre de priorité :
OPERATOR | RÉFÉRENCE |
---|---|
-band -bnot -bor -bxor -shr -shl |
about_Arithmetic_Operators |
-and -or -xor |
about_Logical_Operators |
Les éléments suivants ne sont pas de vrais opérateurs. Ils font partie de la syntaxe de commande de PowerShell, et non de la syntaxe d’expression. L’affectation est toujours la dernière action qui se produit.
SYNTAX | RÉFÉRENCE |
---|---|
. (point-source) |
about_Operators |
& (appel) |
about_Operators |
? <if-true> : <if-false> (opérateur ternaire) |
about_Operators |
?? (opérateur coalese null) |
about_Operators |
| (opérateur de pipeline) |
about_Operators |
> >> 2> 2>> 2>&1 |
about_Redirection |
&& || (opérateurs de chaîne de pipeline) |
about_Operators |
= += -= *= /= %= ??= |
about_Assignment_Operators |
Exemples
Les deux commandes suivantes montrent les opérateurs arithmétiques et l’effet de l’utilisation de parenthèses pour forcer PowerShell à évaluer d’abord la partie fermée de l’expression.
PS> 2 + 3 * 4
14
PS> (2 + 3) * 4
20
L’exemple suivant obtient les fichiers texte en lecture seule du répertoire local et les enregistre dans la $read_only
variable.
$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}
Il équivaut à l’exemple suivant.
$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )
Étant donné que l’opérateur de pipeline (|
) a une priorité plus élevée que l’opérateur d’affectation (=
), les fichiers que l’applet Get-ChildItem
de commande obtient sont envoyés à l’applet de commande pour filtrage Where-Object
avant d’être affectés à la $read_only
variable.
L’exemple suivant montre que l’opérateur d’index est prioritaire sur l’opérateur cast.
Cette expression crée un tableau de trois chaînes. Ensuite, il utilise l’opérateur d’index avec la valeur 0 pour sélectionner le premier objet du tableau, qui est la première chaîne. Enfin, il caste l’objet sélectionné sous forme de chaîne. Dans ce cas, le cast n’a aucun effet.
PS> [string]@('Windows','PowerShell','2.0')[0]
Windows
Cette expression utilise des parenthèses pour forcer l’opération de cast à se produire avant la sélection d’index. Par conséquent, l’ensemble du tableau est casté sous la forme d’une chaîne (unique). Ensuite, l’opérateur d’index sélectionne le premier élément du tableau de chaînes, qui est le premier caractère.
PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
Dans l’exemple suivant, étant donné que l’opérateur -gt
(supérieur à) a une priorité plus élevée que l’opérateur -and
(AND logique), le résultat de l’expression est FALSE.
PS> 2 -gt 4 -and 1
False
Elle équivaut à l’expression suivante.
PS> (2 -gt 4) -and 1
False
Si l’opérateur -and avait une priorité plus élevée, la réponse serait TRUE.
PS> 2 -gt (4 -and 1)
True
Toutefois, cet exemple illustre un principe important de gestion de la priorité de l’opérateur. Lorsqu’une expression est difficile à interpréter, utilisez des parenthèses pour forcer l’ordre d’évaluation, même lorsqu’elle force la priorité de l’opérateur par défaut. Les parenthèses indiquent clairement vos intentions aux personnes qui lisent et gèrent vos scripts.