Freigeben über


Informationen zur Operatorrangfolge

KURZE BESCHREIBUNG

Listen die PowerShell-Operatoren in Rangfolge.

LANGE BESCHREIBUNG

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

Wenn Operatoren die gleiche Priorität haben, wertet PowerShell sie von links nach rechts aus, wie sie im Ausdruck angezeigt werden. Ausnahmen sind die Zuweisungsoperatoren, die Umwandlungsoperatoren und die Negationsoperatoren (!, -not, -bnot), die von rechts nach links ausgewertet werden.

Sie können Gehäuse wie Klammern verwenden, um die Standardrangfolge zu überschreiben und PowerShell zu erzwingen, den eingeschlossenen Teil eines Ausdrucks vor einem nicht abgeschlossenen 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 Priorität.

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

OPERATOR VERWEIS
$() @() () @{} about_Operators
. (Memberzugriff) about_Operators
:: (statisch) about_Operators
[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. Bei den Varianten, bei denen die Groß- und Kleinschreibung beachtet wird, gilt die gleiche Priorität.

OPERATOR VERWEIS
-split (binär) about_Split
-join (binär) about_Join
-is -isnot -as about_Type_Operators
-eq -ne -gt -gt -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 rangfolgerischer Reihenfolge fortgesetzt:

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

Die folgenden Elemente sind keine true-Operatoren. Sie sind Teil der PowerShell-Befehlssyntax, nicht der Ausdruckssyntax. Die Zuweisung ist immer die letzte Aktion, die stattfindet.

SYNTAX VERWEIS
. (Punktquelle) about_Operators
& (Aufruf) about_Operators
| (Pipelineoperator) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
= += -= *= /= %= 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}

Es entspricht dem folgenden Beispiel.

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

Da der Pipelineoperator (|) eine höhere Priorität hat als der Zuweisungsoperator (=), werden die Dateien, die das Get-ChildItem Cmdlet abruft, zur Filterung 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 aus 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 wird das ausgewählte Objekt als Zeichenfolge umgewandelt. In diesem Fall hat die Umwandlung keine Auswirkung.

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

Dieser Ausdruck verwendet Klammern, um den Umwandlungsvorgang vor der Indexauswahl zu erzwingen. Infolgedessen wird das gesamte Array als (einzelne) Zeichenfolge umgewandelt. 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 FALSE, da der -gt Operator (größer als) eine höhere Priorität als der -and (logische AND)-Operator hat.

PS> 2 -gt 4 -and 1
False

Sie entspricht dem folgenden Ausdruck.

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

Wenn der -und-Operator eine höhere Priorität hätte, lautet die Antwort TRUE.

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

Dieses Beispiel veranschaulicht jedoch ein wichtiges Prinzip der Verwaltung der Operatorrangfolge. Wenn ein Ausdruck für Personen schwer zu interpretieren ist, verwenden Sie Klammern, um die Auswertungsreihenfolge zu erzwingen, auch wenn die Standardoperatorrangfolge erzwingt wird. Die Klammern machen Ihre Absichten für Personen klar, die Ihre Skripts lesen und verwalten.

SIEHE AUCH

about_Operators

about_Assignment_Operators

about_Comparison_Operators

about_Arithmetic_Operators

about_Join

about_Redirection

about_Scopes

about_Split

about_Type_Operators