PowerShell
Operatoren
Suche…
Einführung
Ein Operator ist ein Zeichen, das eine Aktion darstellt. Sie weist den Compiler / Interpreter an, bestimmte mathematische, relationale oder logische Operationen auszuführen und das Endergebnis zu erzeugen. PowerShell interpretiert auf eine bestimmte Art und Weise und kategorisiert dementsprechend wie arithmetische Operatoren Operationen hauptsächlich mit Zahlen, sie wirken sich jedoch auch auf Zeichenfolgen und andere Datentypen aus. Neben den Basisoperatoren verfügt PowerShell über eine Reihe von Operatoren, die Zeit und Codieraufwand sparen (z. B. -like, -match, -replace usw.).
Rechenzeichen
1 + 2 # Addition
1 - 2 # Subtraction
-1 # Set negative value
1 * 2 # Multiplication
1 / 2 # Division
1 % 2 # Modulus
100 -shl 2 # Bitwise Shift-left
100 -shr 1 # Bitwise Shift-right
Logische Operatoren
-and # Logical and
-or # Logical or
-xor # Logical exclusive or
-not # Logical not
! # Logical not
Zuweisungsoperatoren
Einfache arithmetik:
$var = 1 # Assignment. Sets the value of a variable to the specified value
$var += 2 # Addition. Increases the value of a variable by the specified value
$var -= 1 # Subtraction. Decreases the value of a variable by the specified value
$var *= 2 # Multiplication. Multiplies the value of a variable by the specified value
$var /= 2 # Division. Divides the value of a variable by the specified value
$var %= 2 # Modulus. Divides the value of a variable by the specified value and then
# assigns the remainder (modulus) to the variable
Inkrement und Dekrement:
$var++ # Increases the value of a variable, assignable property, or array element by 1
$var-- # Decreases the value of a variable, assignable property, or array element by 1
Vergleichsoperatoren
PowerShell-Vergleichsoperatoren bestehen aus einem führenden Bindestrich ( -
), gefolgt von einem Namen ( eq
für equal
, gt
für greater than
, usw.).
Namen können mit Sonderzeichen vorangestellt werden, um das Verhalten des Operators zu ändern:
i # Case-Insensitive Explicit (-ieq)
c # Case-Sensitive Explicit (-ceq)
Die Groß- und Kleinschreibung wird nicht berücksichtigt, wenn nicht angegeben ("a" -eq "A") und ("a" -ieq "A").
Einfache Vergleichsoperatoren:
2 -eq 2 # Equal to (==)
2 -ne 4 # Not equal to (!=)
5 -gt 2 # Greater-than (>)
5 -ge 5 # Greater-than or equal to (>=)
5 -lt 10 # Less-than (<)
5 -le 5 # Less-than or equal to (<=)
String-Vergleichsoperatoren:
"MyString" -like "*String" # Match using the wildcard character (*)
"MyString" -notlike "Other*" # Does not match using the wildcard character (*)
"MyString" -match "$String^" # Matches a string using regular expressions
"MyString" -notmatch "$Other^" # Does not match a string using regular expressions
Vergleichsoperatoren für Sammlungen:
"abc", "def" -contains "def" # Returns true when the value (right) is present
# in the array (left)
"abc", "def" -notcontains "123" # Returns true when the value (right) is not present
# in the array (left)
"def" -in "abc", "def" # Returns true when the value (left) is present
# in the array (right)
"123" -notin "abc", "def" # Returns true when the value (left) is not present
# in the array (right)
Umleitungsoperatoren
Erfolgsausgabestrom:
cmdlet > file # Send success output to file, overwriting existing content
cmdlet >> file # Send success output to file, appending to existing content
cmdlet 1>&2 # Send success and error output to error stream
Fehlerausgabestrom:
cmdlet 2> file # Send error output to file, overwriting existing content
cmdlet 2>> file # Send error output to file, appending to existing content
cmdlet 2>&1 # Send success and error output to success output stream
Warnungsausgabestrom: (PowerShell 3.0+)
cmdlet 3> file # Send warning output to file, overwriting existing content
cmdlet 3>> file # Send warning output to file, appending to existing content
cmdlet 3>&1 # Send success and warning output to success output stream
Ausführlicher Ausgabestrom: (PowerShell 3.0+)
cmdlet 4> file # Send verbose output to file, overwriting existing content
cmdlet 4>> file # Send verbose output to file, appending to existing content
cmdlet 4>&1 # Send success and verbose output to success output stream
Debug-Ausgabestream: (PowerShell 3.0 und höher)
cmdlet 5> file # Send debug output to file, overwriting existing content
cmdlet 5>> file # Send debug output to file, appending to existing content
cmdlet 5>&1 # Send success and debug output to success output stream
Informationsausgabestream: (PowerShell 5.0 und höher)
cmdlet 6> file # Send information output to file, overwriting existing content
cmdlet 6>> file # Send information output to file, appending to existing content
cmdlet 6>&1 # Send success and information output to success output stream
Alle Ausgabeströme:
cmdlet *> file # Send all output streams to file, overwriting existing content
cmdlet *>> file # Send all output streams to file, appending to existing content
cmdlet *>&1 # Send all output streams to success output stream
Unterschiede zum Pipe Operator ( |
)
Umleitungsoperatoren leiten nur Streams zu Dateien oder Streams zu Streams um. Der Pipe-Operator pumpt ein Objekt entlang der Pipeline zu einem Cmdlet oder der Ausgabe. Die Funktionsweise der Pipeline unterscheidet sich im Allgemeinen von der Funktionsweise der Umleitung und kann unter Arbeiten mit der PowerShell-Pipeline gelesen werden
Mischen von Operandentypen: Der Typ des linken Operanden bestimmt das Verhalten.
Für die Zugabe
"4" + 2 # Gives "42"
4 + "2" # Gives 6
1,2,3 + "Hello" # Gives 1,2,3,"Hello"
"Hello" + 1,2,3 # Gives "Hello1 2 3"
Zur Multiplikation
"3" * 2 # Gives "33"
2 * "3" # Gives 6
1,2,3 * 2 # Gives 1,2,3,1,2,3
2 * 1,2,3 # Gives an error op_Multiply is missing
Die Auswirkungen können versteckte Folgen für Vergleichsoperatoren haben:
$a = Read-Host "Enter a number"
Enter a number : 33
$a -gt 5
False
String-Manipulationsoperatoren
Operator ersetzen:
Der -replace
Operator ersetzt ein Muster in einem Eingabewert mithilfe eines regulären Ausdrucks. Dieser Operator verwendet zwei Argumente (durch ein Komma getrennt): ein Muster für reguläre Ausdrücke und dessen Ersetzungswert (der optional ist und standardmäßig eine leere Zeichenfolge).
"The rain in Seattle" -replace 'rain','hail' #Returns: The hail in Seattle
"[email protected]" -replace '^[\w]+@(.+)', '$1' #Returns: contoso.com
Split- und Join-Operatoren:
Der -split
Operator teilt einen String in ein Array von Sub-Strings auf.
"A B C" -split " " #Returns an array string collection object containing A,B and C.
Der -join
Operator -join
ein String-Array zu einem einzigen String zusammen.
"E","F","G" -join ":" #Returns a single string: E:F:G