about_Operator_Precedence

Kurze Beschreibung

Listet die PowerShell-Operatoren in der Rangfolge auf.

Lange Beschreibung

Mithilfe von PowerShell-Operatoren können Sie einfache, aber leistungsstarke Ausdrücke erstellen. In diesem Thema werden die Operatoren in der Rangfolge aufgeführt. Rangfolge ist die Reihenfolge, in der PowerShell die Operatoren auswertet, wenn mehrere Operatoren im selben Ausdruck angezeigt werden.

Wenn Operatoren gleichrangig sind, wertet PowerShell sie von links nach rechts aus, während sie im Ausdruck angezeigt werden. Die Ausnahmen sind die Zuordnungsoperatoren, die Umwandlungsoperatoren und die Negationsoperatoren (!, -not, ), -bnotdie von rechts nach links ausgewertet werden.

Sie können Anlagen wie Klammern verwenden, um die Standardrangfolge außer Kraft zu setzen und PowerShell zu erzwingen, um den eingeschlossenen Teil eines Ausdrucks vor einem nicht zusammenhängenden Teil auszuwerten.

In der folgenden Liste werden Operatoren in der Reihenfolge aufgeführt, in der sie ausgewertet werden. Operatoren in derselben Zeile oder in derselben Gruppe haben die gleiche Rangfolge.

In der Spalte "Operator" werden die Operatoren aufgelistet. In der Spalte "Referenz" wird das PowerShell-Hilfethema aufgeführt, in dem der Operator beschrieben wird. Geben Sie zum Anzeigen des Themas die Leiste get-help <topic-name>ein.

OPERATOR REFERENZ
$() @() () @{} about_Operators
. ?. (Mitgliedzugriff) about_Operators
:: (statisch) about_Operators
[0] ?[0] (Indexoperator) about_Operators
[int] (Umwandlungsoperatoren) about_Operators
-split (unär) about_Split
-join (unär) about_Join
, (Kommaoperator) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (Bereichsoperator) about_Operators
-f (Formatoperator) about_Operators
- (unär/negativ) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

Die folgende Gruppe von Operatoren hat die gleiche Priorität. Die Groß-/Kleinschreibung und die explizite Groß-/Kleinschreibung haben die gleiche Priorität.

OPERATOR REFERENZ
-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

Die Liste wird hier mit den folgenden Operatoren in Rangfolge fortgesetzt:

OPERATOR REFERENZ
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

Die folgenden Elemente sind keine wahren Operatoren. Sie sind Teil der Befehlssyntax von PowerShell, nicht der Ausdruckssyntax. Zuordnung ist immer die letzte Aktion, die geschieht.

SYNTAX REFERENZ
. (Punktquelle) about_Operators
& (Anruf) about_Operators
? <if-true> : <if-false> (Ternärer Operator) about_Operators
?? (Null-Kohlenoperator) about_Operators
| (Pipelineoperator) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (Pipelinekettenoperatoren) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

Beispiele

Die folgenden beiden Befehle zeigen die arithmetischen Operatoren und die Auswirkung der Verwendung von Klammern, um PowerShell zu erzwingen, den eingeschlossenen Teil des Ausdrucks zuerst auszuwerten.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

Im folgenden Beispiel werden die schreibgeschützten Textdateien aus dem lokalen Verzeichnis abgerufen und in der $read_only Variablen gespeichert.

$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}

Sie entspricht dem folgenden Beispiel.

$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )

Da der Pipelineoperator (|) eine höhere Priorität hat als der Zuordnungsoperator (=), werden die Dateien, die das Get-ChildItem Cmdlet erhält, zum Filtern an das Where-Object Cmdlet gesendet, bevor sie der $read_only Variablen zugewiesen werden.

Im folgenden Beispiel wird veranschaulicht, dass der Indexoperator Vorrang vor dem Umwandlungsoperator hat.

Dieser Ausdruck erstellt ein Array von drei Zeichenfolgen. Anschließend wird der Indexoperator mit dem Wert 0 verwendet, um das erste Objekt im Array auszuwählen, bei dem es sich um die erste Zeichenfolge handelt. Schließlich wandelt es das ausgewählte Objekt als Zeichenfolge um. In diesem Fall hat die Umwandlung keine Auswirkung.

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

Dieser Ausdruck verwendet Klammern, um zu erzwingen, dass der Umwandlungsvorgang vor der Indexauswahl erfolgt. Daher wird das gesamte Array als (einzelne) Zeichenfolge umgeformt. Anschließend wählt der Indexoperator das erste Element im Zeichenfolgenarray aus, bei dem es sich um das erste Zeichen handelt.

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

Im folgenden Beispiel ist das Ergebnis des Ausdrucks FALSCH, da der -gt Operator (größer als) eine höhere Priorität hat als der -and logische AND-Operator.

PS> 2 -gt 4 -and 1
False

Sie entspricht dem folgenden Ausdruck.

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

Wenn der Operator eine höhere Priorität hatte, wäre die Antwort WAHR.

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

In diesem Beispiel wird jedoch ein wichtiges Prinzip der Rangfolge des Betreibers veranschaulicht. Wenn ein Ausdruck für Personen schwierig zu interpretieren ist, verwenden Sie Klammern, um die Auswertungsreihenfolge zu erzwingen, auch wenn sie die Rangfolge des Standardoperators erzwingt. Die Klammern machen Ihre Absichten für Personen klar, die lesen und Standard Ihre Skripts enthalten.

Weitere Informationen