about_Operator_Precedence
Letzte Aktualisierung: Mai 2014
Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
THEMA
about_Operator_Precedence
KURZE BESCHREIBUNG
Listet die Windows PowerShell-Operatoren in ihrer Rangfolge auf.
[Dieses Thema ist ein Beitrag von Kirk Munro, einem Windows PowerShell-MVP aus Ottawa, Ontario, Kanada.]
LANGE BESCHREIBUNG
Mithilfe von Windows PowerShell-Operatoren können Sie einfache, aber leistungsstarke Ausdrücke erstellen. Dieses Thema listet die Operatoren in ihrer Rangfolge auf. Die Rangfolge ist die Reihenfolge, in der die Operatoren von Windows PowerShell ausgewertet werden, wenn mehrere Operatoren im gleichen Ausdruck vorkommen.
Wenn Operatoren einen gleiche Rang haben, werden sie von Windows PowerShell von links nach rechts ausgewertet. Ausnahmen sind die Zuweisungsoperatoren, die Umwandlungsoperatoren und die Negationsoperatoren (!, -not -bnot), die von rechts nach links ausgewertet werden.
Sie können Einschlüsse verwenden, z. B. Klammern, um die standardmäßige Rangfolge zu überschreiben und Windows PowerShell dazu zu zwingen, den eingeschlossenen Teil des Ausdrucks vor einem nicht eingeschlossenen Teil auszuwerten.
In der folgenden Liste sind die Operatoren in der Reihenfolge aufgeführt, in der sie ausgewertet werden. Operatoren in der gleichen Zeile oder in der gleichen Gruppe haben denselben Rang.
In der Operator-Spalte sind die Operatoren aufgelistet. In der Reference-Spaltenlisten ist das Windows PowerShell-Hilfethema aufgelistet, in dem der Operator beschrieben wird. Um das Thema anzuzeigen, geben Sie „get-help <topic-name>“ ein.
OPERATOR REFERENCE
-------- ---------
$() @() about_Operators
. (dereference) :: (static) about_Operators
[0] (index operator) about_Operators
[int] (cast operators) about_Operators
-split (unary) -join (unary) about_Split, about_Join
, (comma operator) about_Operators
++ -- about_Assignment_Operators
-not ! -bNot about_Logical_Operators, about_Comparison_Operators
.. (range operator) about_Operators
-f (format operator) about_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators
In der folgenden Gruppe von Operatoren haben alle Operatoren denselben Rang. Ihre Varianten mit Beachtung von Groß- und Kleinschreibung und ihre Varianten mit expliziter Nichtbeachtung von Groß- und Kleinschreibung haben denselben Rang.
-split (binary) about_Split
-join (binary) 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 der Rangfolge fortgesetzt:
-band -bor -bxor about_Comparison_Operators
-and -or -xor about_Comparison_Operators
. (dot-source) & (call) about_Scopes, about_Operators
| (pipeline operator) 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 Windows PowerShell dazu zu zwingen, den eingeschlossenen Teil des Ausdrucks zuerst auszuwerten.
C:\PS> 2 + 3 * 4
14
C:\PS> (2 + 3) * 4
20
Das folgende Beispiel ruft die schreibgeschützten Textdateien aus dem lokalen Verzeichnis ab und speichert sie in der $read_only-Variablen.
$read_only = get-childitem *.txt | where-object {$_.isReadOnly}
Dies entspricht dem folgenden Beispiel.
$read_only = ( get-childitem *.txt | where-object {$_.isReadOnly} )
Da der Pipeline-Operator (|) einen höheren Rang hat als der Zuweisungsoperator (=), werden die Dateien, die das Get-ChildItem-Cmdlet abruft, an das Where-Object-Cmdlet zum Filtern gesendet, bevor sie der $read_only-Variablen zugewiesen werden.
Das folgende Beispiel zeigt, dass der Index-Operator Vorrang vor dem Umwandlungsoperator hat. Der erste Ausdruck erstellt ein Array aus drei Zeichenfolgen. Anschließend verwendet er den Index-Operator mit einem Wert von 0, um das erste Objekt in dem Array auszuwählen, was die erste Zeichenfolge ist. Schließlich wandelt es das ausgewählte Objekt als Zeichenfolge um. In diesem Fall ist die Umwandlung wirkungslos.
C:\PS> [string]@('Windows','PowerShell','2.0')[0]
Windows
Der zweite Ausdruck verwendet Klammern, um zu erzwingen, dass der Umwandlungsvorgang vor der Index-Auswahl erfolgt. Daher wird das gesamte Array als eine (einzelne) Zeichenfolge umgewandelt. Dann wählt der Index-Operator das erste Element in dem Zeichenfolgen-Array aus, was das erste Zeichen ist.
C:\PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
Im folgenden Beispiel führt der Ausdruck, da der Operator -gt (größer als) einen höheren Rang hat als der Operator -and (logisches UND), zum Ergebnis FALSE.
C:\PS> 2 -gt 4 -and 1
False
Dies entspricht dem folgenden Ausdruck.
C:\PS> (2 -gt 4) -and 1
False
Hätte der -and einen höheren Rang, würde die Antwort TRUE lauten.
C:\PS> 2 -gt (4 -and 1)
True
Dieses Beispiel veranschaulicht jedoch ein wichtiges Prinzip beim Umgang mit der Rangfolge der Operatoren. Wenn ein Ausdruck für Menschen schwer zu interpretieren ist, verwenden Sie Klammern, um die Reihenfolge der Auswertung zu erzwingen, selbst wenn dadurch die Standard-Operatorrangfolge erzwungen wird. Die Klammern verdeutlichen Ihre Absicht gegenüber Personen, die Ihre Skripts lesen und pflegen.
SIEHE AUCH
about_Assignment_Operators
about_Comparison_Operators
about_Join
about_Logical_Operators
about_Operators
about_Redirection
about_Scopes
about_Split
about_Type_Operators