about_Operator_Precedence
Kort beskrivning
Visar en lista över PowerShell-operatorer i prioritetsordning.
Lång beskrivning
Med PowerShell-operatorer kan du skapa enkla men kraftfulla uttryck. I det här avsnittet visas operatorerna i prioritetsordning. Prioritetsordning är den ordning i vilken PowerShell utvärderar operatorerna när flera operatorer visas i samma uttryck.
När operatorer har samma prioritet utvärderar PowerShell dem från vänster till höger när de visas i uttrycket. Undantagen är tilldelningsoperatorerna, de gjutna operatorerna och negationsoperatorerna (!
, -not
, -bnot
), som utvärderas från höger till vänster.
Du kan använda inneslutningar, till exempel parenteser, för att åsidosätta standardprioritetsordningen och tvinga PowerShell att utvärdera den omslutna delen av ett uttryck före en omsluten del.
I följande lista visas operatorer i den ordning de utvärderas. Operatorer på samma rad, eller i samma grupp, har samma prioritet.
Kolumnen Operator visar operatorerna. I kolumnen Referens visas det PowerShell-hjälpavsnitt där operatorn beskrivs. Om du vill visa ämnet skriver du get-help <topic-name>
.
OPERATOR | REFERENS |
---|---|
$() @() () @{} |
about_Operators |
. ?. (medlemsåtkomst) |
about_Operators |
:: (statisk) |
about_Operators |
[0] ?[0] (indexoperator) |
about_Operators |
[int] (gjutna operatorer) |
about_Operators |
-split (unary) |
about_Split |
-join (unary) |
about_Join |
, (kommaoperator) |
about_Operators |
++ -- |
about_Assignment_Operators |
! -not |
about_Logical_Operators |
.. (intervalloperator) |
about_Operators |
-f (formatoperator) |
about_Operators |
- (unary/negative) |
about_Arithmetic_Operators |
* / % |
about_Arithmetic_Operators |
+ - |
about_Arithmetic_Operators |
Följande grupp med operatorer har samma prioritet. Deras skiftlägeskänsliga och uttryckligen skiftlägesokänsliga varianter har samma prioritet.
OPERATOR | REFERENS |
---|---|
-split (binärt) |
about_Split |
-join (binärt) |
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 |
Listan återupptas här med följande operatorer i prioritetsordning:
OPERATOR | REFERENS |
---|---|
-band -bnot -bor -bxor -shr -shl |
about_Arithmetic_Operators |
-and -or -xor |
about_Logical_Operators |
Följande objekt är inte sanna operatorer. De ingår i PowerShells kommandosyntax, inte uttryckssyntax. Tilldelning är alltid den sista åtgärden som inträffar.
SYNTAX | REFERENS |
---|---|
. (punktkälla) |
about_Operators |
& (samtal) |
about_Operators |
? <if-true> : <if-false> (Ternary-operator) |
about_Operators |
?? (null-coalese operator) |
about_Operators |
| (pipelineoperator) |
about_Operators |
> >> 2> 2>> 2>&1 |
about_Redirection |
&& || (pipelinekedjeoperatorer) |
about_Operators |
= += -= *= /= %= ??= |
about_Assignment_Operators |
Exempel
Följande två kommandon visar de aritmetiska operatorerna och effekten av att använda parenteser för att tvinga PowerShell att utvärdera den omslutna delen av uttrycket först.
PS> 2 + 3 * 4
14
PS> (2 + 3) * 4
20
I följande exempel hämtas skrivskyddade textfiler från den lokala katalogen och sparas i variabeln $read_only
.
$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}
Det motsvarar följande exempel.
$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )
Eftersom pipelineoperatorn (|
) har högre prioritet än tilldelningsoperatorn (=
) skickas filerna som cmdleten Get-ChildItem
hämtar till cmdleten Where-Object
för filtrering innan de tilldelas till variabeln $read_only
.
I följande exempel visas att indexoperatorn har företräde framför cast-operatorn.
Det här uttrycket skapar en matris med tre strängar. Sedan använder den indexoperatorn med värdet 0 för att välja det första objektet i matrisen, som är den första strängen. Slutligen omvandlas det markerade objektet som en sträng. I det här fallet har skådespelarna ingen effekt.
PS> [string]@('Windows','PowerShell','2.0')[0]
Windows
Det här uttrycket använder parenteser för att tvinga gjutningsåtgärden att ske före indexmarkeringen. Det innebär att hela matrisen gjuts som en (enskild) sträng. Indexoperatorn väljer sedan det första objektet i strängmatrisen, vilket är det första tecknet.
PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
I följande exempel, eftersom operatorn -gt
(större än) har högre prioritet än operatorn -and
(logisk AND), är resultatet av uttrycket FALSE.
PS> 2 -gt 4 -and 1
False
Det motsvarar följande uttryck.
PS> (2 -gt 4) -and 1
False
Om operatorn -and hade högre prioritet skulle svaret vara TRUE.
PS> 2 -gt (4 -and 1)
True
Det här exemplet visar dock en viktig princip för att hantera operatorprioriteten. När ett uttryck är svårt för personer att tolka använder du parenteser för att framtvinga utvärderingsordningen, även när det tvingar fram standardoperatorns prioritet. Parenteserna gör dina avsikter tydliga för personer som läser och underhåller dina skript.
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för