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.