Dela via


about_Operator_Precedence

Kort beskrivning

Listor PowerShell-operatorerna 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 som de visas i uttrycket. Undantagen är tilldelningsoperatorerna, gjutna operatorerna och negationsoperatorerna (!, -not, -bnot), som utvärderas från höger till vänster.

Du kan använda kabinett, till exempel parenteser, för att åsidosätta standardprioritetsordningen och tvinga PowerShell att utvärdera den omslutna delen av ett uttryck före en icke-sluten del.

I följande lista visas operatorer i den ordning som de utvärderas. Operatorer på samma rad, eller i samma grupp, har samma prioritet.

Operatorerna visas i kolumnen Operator. I kolumnen Referens visas det PowerShell-hjälpavsnitt där operatorn beskrivs. Om du vill visa ämnet skriver du get-help <topic-name>.

OPERATÖR REFERENS
$() @() () @{} about_Operators
. ?. (medlemsåtkomst) about_Operators
:: (statisk) about_Operators
[0] ?[0] (indexoperator) about_Operators
[int] (gjutna operatorer) about_Operators
-split (enställigt) about_Split
-join (enställigt) about_Join
, (kommaoperator) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (intervalloperator) about_Operators
-f (formatoperator) about_Operators
- (enställig/negativ) 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.

OPERATÖR REFERENS
-split (binär) about_Split
-join (binär) 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:

OPERATÖR REFERENS
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

Följande objekt är inte sanna operatorer. De är en del av 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
?? (operatorn null-coalese) 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 slutna delen av uttrycket först.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

I följande exempel hämtas de skrivskyddade textfilerna 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 de filer 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änds indexoperatorn med värdet 0 för att välja det första objektet i matrisen, vilket ä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 cast-åtgärden att utföras före indexvalet. Därför omvandlas hela matrisen som en (enskild) sträng. Sedan väljer indexoperatorn 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 operatorprioretens. När ett uttryck är svårt för personer att tolka använder du parenteser för att framtvinga utvärderingsordningen, även om det tvingar standardoperatorprioritet. Parenteserna gör dina avsikter tydliga för personer som läser och underhåller dina skript.

Se även