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-operatoren (!
, -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 af te dwingen het ingesloten deel van een expressie te evalueren vóór een niet-ingesloten 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>
.
OPERATOR | VERWIJZING |
---|---|
$() @() () @{} |
about_Operators |
. ?. (ledentoegang) |
about_Operators |
:: (statisch) |
about_Operators |
[0] ?[0] (indexoperator) |
about_Operators |
[int] (cast operators) |
about_Operators |
-split (unaire) |
about_Split |
-join (unaire) |
about_Join |
, (kommaoperator) |
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> (Ternaire operator) |
about_Operators |
?? (operator null-coalese) |
about_Operators |
| (pijplijnoperator) |
about_Operators |
> >> 2> 2>> 2>&1 |
about_Redirection |
&& || (operators van pijplijnketens) |
about_Operators |
= += -= *= /= %= ??= |
about_Assignment_Operators |
Voorbeelden
De volgende twee opdrachten tonen de rekenkundige operatoren en het effect van het gebruik van haakjes om PowerShell te dwingen eerst het bijgevoegde 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 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, 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 wordt een matrix van drie tekenreeksen gemaakt. 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 een 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 af te dwingen 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, het eerste teken.
PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
Omdat in het volgende voorbeeld 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
Dit komt overeen met 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 de prioriteit van operatoren. 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.