Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Brève description
Répertorie 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 précédence 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 priorité égale, PowerShell les évalue de gauche à droite lorsqu’ils apparaissent dans l’expression. Les exceptions sont les opérateurs d’assignation, 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 une priorité égale.
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 de manière interactive, utilisez Get-Help -Name <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 une priorité égale. Leurs variantes respectant la casse et ne respectent pas explicitement 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 des opérateurs vrais. 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 |
|---|---|
. (dot-source) |
about_Operators |
& (appel) |
about_Operators |
? <if-true> : <if-false> (opérateur ternaire) |
about_Operators |
?? (opérateur de fusion 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 |
Examples
Les deux exemples suivants montrent les opérateurs arithmétiques et l’effet de l’utilisation de parenthèses pour forcer PowerShell à évaluer la partie fermée de l’expression en premier.
PS> 2 + 3 * 4
14
PS> (2 + 3) * 4
20
L’exemple suivant obtient les fichiers texte en lecture seule à partir du répertoire local et les enregistre dans la $readOnly variable.
$readOnly = Get-ChildItem -Path *.txt | Where-Object { $_.IsReadOnly }
Il équivaut à l’exemple suivant.
$readOnly = (Get-ChildItem -Path *.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 Where-Object de commande pour le filtrage avant qu’elles ne soient affectées à la $readOnly variable.
L’exemple suivant montre que l’opérateur d’index est prioritaire sur l’opérateur de cast.
Cette expression crée un tableau de trois chaînes. Ensuite, il utilise l’opérateur d’index avec une valeur de 0 sélection du premier objet dans le tableau, qui est la première chaîne. Enfin, il convertit l’objet sélectionné en tant que 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
Il équivaut à l’expression suivante.
PS> (2 -gt 4) -and 1
False
Si l’opérateur -and avait une priorité plus élevée, le résultat serait TRUE.
PS> 2 -gt (4 -and 1)
True
Toutefois, cet exemple illustre un principe important de gestion de la priorité des opérateurs. 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 rendent vos intentions claires aux personnes qui lisent et gèrent vos scripts.
L’exemple suivant illustre la priorité entre les opérateurs logiques et -or les -and opérateurs logiques.
PS> $true -or $false -and $false
False
Dans d’autres langages tels que C#, logique AND a généralement une priorité plus élevée que l’OR logique, vous pouvez donc vous attendre à ce que l’expression ci-dessus génère TRUE.
Toutefois, les opérateurs et -or les -and opérateurs ont une priorité égale dans PowerShell.
Ils sont évalués de gauche à droite à mesure qu’ils apparaissent dans l’expression.
Comme $true -or $false vrai et $true -and $false est FALSE, le résultat de l’expression est FALSE.
Important
D’autres contextes dans PowerShell, tels que WMI Query Language (WQL) et le filtre Active Directory, ont leur propre priorité d’opérateur qui peut différer de la priorité des opérateurs logiques PowerShell.