THEMA about_Comparison_Operators KURZBESCHREIBUNG Beschreibt die Operatoren zum Vergleichen von Werten in Windows PowerShell. DETAILBESCHREIBUNG Über Vergleichsoperatoren können Sie Bedingungen angeben, mit denen Werte verglichen oder Werte gesucht werden, die bestimmte Muster aufweisen. Zum Verwenden eines Vergleichsoperators geben Sie die zu vergleichenden Werte mit einem Operator an, durch den diese getrennt werden. Standardmäßig wird bei Vergleichsoperatoren die Groß-/Kleinschreib ung nicht beachtet. Wenn die Groß-/Kleinschreibung für einen Vergleichsoperator beachtet werden soll, stellen Sie dem Operatornamen ein "c" voran. Beispielsweise lautet die Version von "-eq", bei der die Groß-/Kleinschreibung beachtet wird, "-ceq". Wenn ausdrücklich keine Unterscheidung der Groß-/Kleinschreibung gemacht werden soll, stellen Sie dem Operator ein "i" voran. Beispielsweise lautet die Version von "-eq", bei der die Groß-/Kleinschreibung ausdrücklich nicht beachtet wird, "-ieq". Alle Vergleichsoperatoren, mit Ausnahme der Kapselungsoperatoren (-contains, -notcontains) sowie der Typoperatoren (-is, -isnot) geben einen booleschen Wert zurück, wenn für den Operator (Wert links vom Operator) ein einzelner Wert (ein Skalar) eingegeben wird. Bei Eingabe einer Auflistung von Werten geben die Kapselungs- und Typoperatoren alle übereinstimmenden Werte zurück. Wenn in einer Auflistung keine Übereinstimmungen vorhanden sind, geben diese Operatoren nichts zurück. Die Kapselungsoperatoren und Typoperatoren geben immer einen booleschen Wert zurück. Windows PowerShell unterstützt folgende Vergleichsoperatoren: -eq Beschreibung: Gleich. Schließt einen identischen Wert ein. Beispiel: C:\PS> "abc", "def" -eq "abc" abc -ne Beschreibung: Ungleich. Schließt einen anderen Wert ein. Beispiel: C:\PS> "abc", "def" -ne "abc" def -gt Beschreibung: Größer als. Beispiel: C:\PS> 8 -gt 6 True -ge Beschreibung: Größer als oder gleich. Beispiel: C:\PS> 8 -ge 8 True -lt Beschreibung: Kleiner als. Beispiel: C:\PS> 8 -lt 6 False -le Beschreibung: Kleiner als oder gleich. Beispiel: C:\PS> 6 -le 8 True -like Beschreibung: Übereinstimmung mit dem Platzhalterzeichen (*). Beispiel: C:\PS> "Windows PowerShell" -like "*shell" True -notlike Beschreibung: Stimmt nicht mit dem Platzhalterzeichen (*) überein. Beispiel: C:\PS> "Windows PowerShell" -notlike "*shell" False -match Beschreibung: Stimmt mit einer Zeichenfolge mit regulären Ausdrücken überein. Füllt bei einer Skalareingabe die automatische Variable "$Matches" auf. Beispiel: C:\PS> "Sonntag" -match "Sonn" True C:\PS> $matches Name Value ---- ----- 0 Sonn -notmatch Beschreibung: Stimmt nicht mit einer Zeichenfolge überein. Verwendet reguläre Ausdrücke. Füllt bei einer Skalareingabe die automatische Variable "$Matches" auf. Beispiel: C:\PS> "Sonntag" -notmatch "Sonn" False C:\PS> $matches Name Value ---- ----- 0 Sonn -contains Beschreibung: Kapselungsoperator. Schließt einen identischen Wert ein, der kein Teil eines Werts ist. Gibt immer einen booleschen Wert zurück. Beispiel: C:PS> "abc", "def" -contains "def" True -notcontains Beschreibung: Kapselungsoperator. Schließt keinen identischen Wert ein. Gibt immer booleschen Wert zurück. Beispiel: C:PS> "Windows", "PowerShell" -notcontains "Shell" True -replace Beschreibung: Ersetzungsoperator. Ändert die angegebenen Elemente eines Werts. Beispiel: C:\PS> "Get-Process" -replace "Get", "Stop" Stop-Process Gleichheitsoperatoren Die Gleichheitsoperatoren (-eq, -ne) geben den Wert TRUE oder die Treffer zurück, wenn mindestens ein Eingabewert mit dem angegebenen Muster identisch ist. Das gesamte Muster muss mit einem gesamten Wert übereinstimmen. In den folgenden Beispielen werden die Auswirkungen des equal to-Operators veranschaulicht: C:PS> 1,2,3 -eq 2 2 C:PS> "PowerShell" -eq "Shell" False C:PS> "Windows", "PowerShell" -eq "Shell" C:PS> C:\PS> "abc", "def", "123" -eq "def" def Kapselungsoperatoren Die Kapselungsoperatoren sind (-contains und -notcontains) ähneln den Gleichheitsoperatoren. Die Kapselungsoperatoren geben jedoch stets einen booleschen Wert zurück, selbst wenn eine Auflistung eingegeben wird. Anders als die Gleichheitsoperatoren geben die Kapselungsoperato ren zudem einen Wert zurück, sobald die erste Übereinstimmung erkannt wurde. Die Gleichheitsoperatoren werten alle Eingaben aus und geben dann alle Übereinstimmungen in der Auflistung zurück. In den folgenden Beispielen werden die Auswirkungen des -contains-Operators veranschaulicht: C:PS> 1,2,3 -contains 2 True C:PS> "PowerShell" -contains "Shell" False C:PS> "Windows", "PowerShell" -contains "Shell" False C:\PS> "abc", "def", "123" -contains "def" True C:\PS> "true", "blau", "sechs" -contains "true" True Im folgenden Beispiel wird gezeigt, wie sich die Kapselungsopera toren vom equal to-Operator unterscheiden. Die Kapselungsoperato ren geben den Wert TRUE als erste Übereinstimmung zurück. C:\PS> 1,2,3,4,5,4,3,2,1 -eq 2 2 2 C:\PS> 1,2,3,4,5,4,3,2,1 -contains 2 True In einer sehr umfangreichen Auflistung gibt der -contains-Operat or Ergebnisse schneller zurück als der equal to-Operator. Suchoperatoren Mit den Suchoperatoren (-match und -notmatch) werden mit regulären Ausdrücken Elemente gesucht, die mit einem angegebenen Muster übereinstimmen bzw. nicht übereinstimmen. Die Syntax lautet wie folgt: <string[]> -match <regulärer-Ausdruck> <string[]> -notmatch <regulärer-Ausdruck> In den folgenden Beispielen werden einige Verwendungsmöglichkeit en des -match-Operators gezeigt: C:\PS> "Windows", "PowerShell" -match ".shell" PowerShell C:\PS> (get-command get-member -syntax) -match "-view" True C:\PS> (get-command get-member -syntax) -notmatch "-path" True C:\PS> (get-content servers.txt) -match "^Server\d\d" Server01 Server02 Mit den Suchoperatoren wird nur in Zeichenfolgen gesucht. In Arrays von ganzen Zahlen oder anderen Objekten kann mit ihnen nicht gesucht werden. Mit dem -match-Operator und dem -notmatch-Operator füllen Sie die automatische Variable "$Matches" auf, wenn die Eingabe (das Argument links) für den Operator aus einem einzelnen Skalarobjekt besteht. Bei Eingabe eines Skalars geben der -match-Operator und der -notmatch-Operator einen booleschen Wert zurück und legen den Wert der automatischen Variablen "$Matches" auf die übereinstimmenden Komponenten des Arguments fest. Bei Eingabe einer Auflistung geben der -match-Operator und der -notmatch-Operator die entsprechenden Elemente dieser Auflistung zurück, doch füllt der Operator die Variable "$Matches" nicht auf. Beispielsweise wird mit dem folgenden Befehl eine Auflistung von Zeichenfolgen an den -match-Operator gesendet. Der -match-Operator gibt die übereinstimmenden Elemente in der Auflistung zurück. Die automatische Variable "$Matches" dabei wird nicht aufgefüllt. C:\PS > "Sonntag", "Montag", "Dienstag" -match "Sonn" Sonntag C:\PS> $matches C:\PS> Im Gegensatz dazu wird mit dem folgenden Befehl eine einzelne Zeichenfolge an den Suchoperator gesendet. Der -match-Operator gibt einen booleschen Wert zurück und füllt die automatische Variable "$Matches" auf. C:\PS> "Sonntag" -match "Sonn" True C:\PS> $matches Name Value ---- ----- 0 Sonn Der -notmatch-Operator füllt bei Eingabe eines Skalars die automatische Variable "$Matches" auf, und das Ergebnis ist False, wenn eine Übereinstimmung erkannt wird. C:\PS > "Sonntag" -notmatch-"Regen" True C:\PS> $matches C:\PS> C:\PS> "Sonntag" -notmatch "tag" False C:\PS> $matches C:\PS> Name Value ---- ----- 0 tag Ersetzungsoperator Mit dem -replace-Operator wird ein Wert mit regulären Ausdrücken ganz oder teilweise durch den angegebenen Wert ersetzt. Sie können den -replace-Operator für zahlreiche Verwaltungsaufgaben verwenden, z. B. zum Umbenennen von Dateien. Mit dem folgenden Befehl werden z. B. die Dateinamenerweiterungen aller GIF-Dateien in ".jpg" geändert: Get-ChildItem | Rename-Item -NewName { $_ -replace '.gif$','.jpg$' } Für den -replace-Operator wird die folgende Syntax verwendet, wobei der Platzhalter <ursprünglich> die zu ersetzenden Zeichen und der Platzhalter <Ersatz> die Ersatzzeichen darstellt: <Eingabe> <Operator> <ursprünglich>, <Ersatz> Standardmäßig wird beim -replace-Operator die Groß-/Kleinschreib ung nicht beachtet. Wenn die Groß-/Kleinschreibung beachtet werden soll, verwenden Sie -creplace. Wenn die Groß- und Kleinschreibung ausdrücklich nicht beachtet werden soll, verwenden Sie ireplace. Betrachten Sie die folgenden Beispiele: C:\PS> "buchen" -replace "B", "S" suchen C:\PS> "buchen" -ireplace "B", "S" suchen C:\PS> "buchen" -creplace "B", "S" buchen Bitweise Operatoren Windows PowerShell unterstützt die standardmäßigen bitweisen Operatoren, einschließlich des bitweisen UND-Operators (-band) und der inklusiven und exklusiven bitweisen ODER-Operatoren (-bor und -bxor). Ab Windows PowerShell 2.0 werden für alle bitweisen Operatoren 64-Bit-Ganzzahlen verwendet. Windows PowerShell unterstützt die folgenden bitweisen Operatoren. Operator Beschreibung Beispiel -------- ---------------------- ------------------- -band Bitweises AND C:\PS> 10 -band 3 2 -bor Bitweises ODER (inklusiv) C:\PS> 10 -bor 3 11 -bxor Bitweises ODER (exklusiv) C:\PS> 10 -bxor 3 9 Bitweise Operatoren wirken sich auf das Binärformat eines Werts aus. So lautet die Bitstruktur für die Zahl 10 wie folgt: 00001010 (basierend auf 1 Byte). Die Bitstruktur für die Zahl 3 lautet: 00000011. Wenn Sie einen bitweisen Operator verwenden, um 10 mit 3 zu vergleichen, werden die einzelnen Bits in jedem Byte verglichen. In einer bitweisen UND-Operation wird das resultierende Bit nur auf 1 festgelegt, wenn beide Eingabebits 1 sind. 00001010 (10) 00000011 ( 3) ------------------ Bitweises UND 00000010 ( 2) In einer bitweisen ODER-Operation (inklusiv) wird das resultierende Bit auf 1 festgelegt, wenn mindestens ein Eingabebit 1 ist. Das resultierende Bit wird nur auf 0 festgelegt, wenn beide Eingabebits auf 0 festgelegt sind. 00001010 (10) 00000011 ( 3) ------------------ Bitweises ODER (inklusiv) 00001011 (11) In einer bitweisen ODER-Operation (exklusiv) wird das resultierende Bit nur auf 1 festgelegt, wenn eines der Eingangbits 1 ist. 00001010 (10) 00000011 ( 3) ------------------ Bitweises ausschließendes ODER (exklusiv) 00001001 ( 9) SIEHE AUCH about_Operators about_Regular_Expressions about_Wildcards Compare-Object