Delen via


about_Operator_Precedence

Korte beschrijving

Geeft een lijst weer van 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, evalueert PowerShell deze van links naar rechts zoals ze worden weergegeven in de expressie. De uitzonderingen zijn de toewijzingsoperatoren, de cast-operators en de negatieoperators (!, -not, -bnot), die van rechts naar links worden geëvalueerd.

U kunt behuizingen, zoals haakjes, gebruiken om de standaardprioriteitsvolgorde te overschrijven en PowerShell af te dwingen om het ingesloten deel van een expressie vóór een niet-afgesloten deel te evalueren.

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.

In de kolom Operator worden de operators weergegeven. De kolom Verwijzing bevat het Help-onderwerp van PowerShell waarin de operator wordt beschreven. Als u het onderwerp wilt weergeven, typt get-help <topic-name>u .

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

De volgende groep operators heeft gelijke 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 echte operators. Ze maken deel uit van de opdrachtsyntaxis van PowerShell, niet van expressiesyntaxis. Toewijzing is altijd de laatste actie die plaatsvindt.

SYNTAXIS VERWIJZING
. (puntbron) about_Operators
& (gesprek) about_Operators
? <if-true> : <if-false> (Ternaire operator) about_Operators
?? (operator null-coalese) about_Operators
| (pijplijnoperator) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (operators voor pijplijnketens) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

Voorbeelden

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

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

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

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

Het is gelijk aan 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 ontvangt, verzonden naar de Where-Object cmdlet voor 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 gebruikt met de waarde 0 om het eerste object in de matrix te selecteren. Dit is de eerste tekenreeks. Ten slotte wordt het geselecteerde object als een tekenreeks gegoten. In dit geval heeft de cast geen effect.

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

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

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

Omdat de -gt operator (groter dan) in het volgende voorbeeld 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 -en de operator hogere prioriteit hadden, zou het antwoord WAAR zijn.

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

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

Zie ook