Delen via


about_Operator_Precedence

Korte beschrijving

Lijsten de PowerShell-operators in volgorde van prioriteit.

Lange beschrijving

Met PowerShell-operators kunt u eenvoudige, maar krachtige expressies maken. In dit onderwerp worden de operators in volgorde van prioriteit vermeld. Prioriteitsvolgorde is de volgorde waarin PowerShell de operators evalueert wanneer meerdere operators in dezelfde expressie worden weergegeven.

Wanneer operators gelijke prioriteit hebben, worden deze door PowerShell van links naar rechts geëvalueerd zoals ze in de expressie worden weergegeven. De uitzonderingen zijn de toewijzingsoperatoren, de cast-operators en de negatie-operators (!, -not, -bnot), die van rechts naar links worden geëvalueerd.

U kunt bijlagen, zoals haakjes, gebruiken om de standaardvolgorde van prioriteit te overschrijven en PowerShell afdwingen om het ingesloten deel van een expressie te evalueren vóór een niet-gesloten deel.

In de volgende lijst worden operators weergegeven in de volgorde waarin ze worden geëvalueerd. Operators op dezelfde regel of in dezelfde groep hebben gelijke prioriteit.

De kolom Operator bevat de operators. De kolom Verwijzing bevat het PowerShell Help-onderwerp waarin de operator wordt beschreven. Typ get-help <topic-name>om het onderwerp weer te geven.

OPERATOR VERWIJZING
$() @() () @{} about_Operators
. ?. (toegang tot leden) about_Operators
:: (statisch) about_Operators
[0] ?[0] (indexoperator) about_Operators
[int] (cast-operators) about_Operators
-split (unarie) about_Split
-join (unarie) about_Join
, (komma-operator) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (bereikoperator) about_Operators
-f (notatieoperator) about_Operators
- (unarie/negatief) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

De volgende groep operators heeft dezelfde prioriteit. Hun hoofdlettergevoelige en expliciet niet-hoofdlettergevoelige varianten hebben dezelfde prioriteit.

OPERATOR VERWIJZING
-split (binair) about_Split
-join (binair) 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

De lijst wordt hier hervat met de volgende operators in volgorde van prioriteit:

OPERATOR VERWIJZING
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

De volgende items zijn geen true-operators. Ze maken deel uit van de opdrachtsyntaxis van PowerShell, geen expressiesyntaxis. Toewijzing is altijd de laatste actie die plaatsvindt.

SYNTAXIS VERWIJZING
. (puntbron) about_Operators
& (oproep) about_Operators
? <if-true> : <if-false> (Ternair operator) about_Operators
?? (operator null-coalese) about_Operators
| (pijplijnoperator) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (pijplijnketenoperators) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

Voorbeelden

De volgende twee opdrachten tonen de rekenkundige operatoren en het effect van het gebruik van haakjes om PowerShell af te dwingen eerst het ingesloten deel van de expressie te evalueren.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

In het volgende voorbeeld worden de alleen-lezen tekstbestanden opgehaald uit de lokale map en opgeslagen in de $read_only variabele.

$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}

Dit komt overeen met het volgende voorbeeld.

$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )

Omdat de pijplijnoperator (|) een hogere prioriteit heeft dan de toewijzingsoperator (=), worden de bestanden die de Get-ChildItem cmdlet krijgt, naar de Where-Object cmdlet verzonden om te filteren voordat ze aan de $read_only variabele worden toegewezen.

In het volgende voorbeeld ziet u dat de indexoperator voorrang heeft op de cast-operator.

Met deze expressie maakt u een matrix van drie tekenreeksen. Vervolgens wordt de indexoperator met de waarde 0 gebruikt om het eerste object in de matrix te selecteren. Dit is de eerste tekenreeks. Ten slotte wordt het geselecteerde object gecast als een tekenreeks. In dit geval heeft de cast geen effect.

PS> [string]@('Windows','PowerShell','2.0')[0]
Windows

Deze expressie maakt gebruik van haakjes om af te dwingen dat de cast-bewerking plaatsvindt vóór de indexselectie. Als gevolg hiervan wordt de hele matrix als een (enkele) tekenreeks gegoten. Vervolgens selecteert de indexoperator het eerste item in de tekenreeksmatrix, het eerste teken.

PS> ([string]@('Windows','PowerShell','2.0'))[0]
W

In het volgende voorbeeld, omdat de -gt operator (groter-dan) een hogere prioriteit heeft dan de -and operator (logische AND), is het resultaat van de expressie ONWAAR.

PS> 2 -gt 4 -and 1
False

Deze is gelijk aan de volgende expressie.

PS> (2 -gt 4) -and 1
False

Als de operator -and een hogere prioriteit heeft, is het antwoord WAAR.

PS> 2 -gt (4 -and 1)
True

In dit voorbeeld ziet u echter een belangrijk principe voor het beheren van operatorprioriteit. Wanneer een expressie moeilijk te interpreteren is, gebruikt u haakjes om de evaluatievolgorde af te dwingen, zelfs wanneer hiermee de standaardoperatorprioriteit wordt afgedwongen. De haakjes maken uw bedoelingen duidelijk voor mensen die uw scripts lezen en onderhouden.

Zie ook