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 weergegeven. 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 terwijl ze in de expressie worden weergegeven. 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 standaardvolgorde van prioriteit te overschrijven en PowerShell af te dwingen 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 operatoren. De kolom Verwijzing bevat het PowerShell Help-onderwerp waarin de operator wordt beschreven. Als u het onderwerp wilt weergeven, typt u get-help <topic-name>.

BEDIENER REFERENTIE
$() @() () @{} about_Operators
. ?. (toegang tot leden) about_Operators
:: (statisch) about_Operators
[0] ?[0] (indexoperator) about_Operators
[int] (castoperators) 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 hoofdlettergevoelige varianten hebben dezelfde prioriteit.

BEDIENER REFERENTIE
-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 operatoren in volgorde van prioriteit:

BEDIENER REFERENTIE
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

De volgende items zijn geen echte operatoren. Ze maken deel uit van de opdrachtsyntaxis van PowerShell, niet de syntaxis van de expressie. Toewijzing is altijd de laatste actie die plaatsvindt.

SYNTAXIS REFERENTIE
. (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 ziet u de rekenkundige operatoren en het effect van het gebruik van haakjes om PowerShell af te dwingen om 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 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 krijgt 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 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 als tekenreeks gecast. In dit geval heeft de cast geen effect.

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

Deze expressie maakt gebruik van haakjes om de cast-bewerking af te dwingen voordat de indexselectie wordt geselecteerd. Als gevolg hiervan wordt de hele matrix gecast als een (één) tekenreeks. Vervolgens selecteert de indexoperator het eerste item in de tekenreeksmatrix. Dit is het eerste teken.

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

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

PS> 2 -gt 4 -and 1
False

Het is gelijk aan de volgende expressie.

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

Als de operator -en operator een hogere prioriteit hadden, zou het antwoord WAAR zijn.

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

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

Zie ook