Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
KURZE BESCHREIBUNG
Erläutert, wie ein Schalter verwendet wird, um mehrere If-Anweisungen zu verarbeiten.
LANGE BESCHREIBUNG
Verwenden Sie eine If-Anweisung, um eine Bedingung in einem Skript oder einer Funktion zu überprüfen. Die If Anweisung kann viele Arten von Bedingungen überprüfen, einschließlich des Werts von Variablen und der Eigenschaften von Objekten.
Verwenden Sie zum Überprüfen mehrerer Bedingungen eine Switch-Anweisung. Die Switch Anweisung entspricht einer Reihe von If-Anweisungen, ist jedoch einfacher. Die Switch-Anweisung listet jede Bedingung und eine optionale Aktion auf. Wenn eine Bedingung erfüllt ist, wird die Aktion ausgeführt.
Die Switch Anweisung verwendet auch die $switch Variable automatic. Weitere Informationen finden Sie unter about_Automatic_Variables.
Eine grundlegende Switch Anweisung weist das folgende Format auf:
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
Die folgende Switch Anweisung vergleicht z. B. den Testwert 3 mit den einzelnen Bedingungen. Wenn der Testwert der Bedingung entspricht, wird die Aktion ausgeführt.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
In diesem einfachen Beispiel wird der Wert mit jeder Bedingung in der Liste verglichen, obwohl für den Wert 3 eine Übereinstimmung vorhanden ist. Die folgende Switch-Anweisung hat zwei Bedingungen für einen Wert von 3. Es zeigt, dass standardmäßig alle Bedingungen getestet werden.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Three again.
Verwenden Sie die Switch-Anweisung, um den Vergleich nach einer Übereinstimmung zu beenden, um Break den Vergleich zu beenden. Die Break-Anweisung beendet die Switch-Anweisung.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."; Break}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Wenn der Testwert eine Auflistung ist, z. B. ein Array, wird jedes Element in der Auflistung in der Reihenfolge ausgewertet, in der er angezeigt wird. In den folgenden Beispielen werden 4 und dann 2 ausgewertet.
switch (4, 2)
{
1 {"It is one." }
2 {"It is two." }
3 {"It is three." }
4 {"It is four." }
3 {"Three again."}
}
It is four.
It is two.
Alle Break Anweisungen gelten für die Auflistung, nicht für jeden Wert, wie im folgenden Beispiel gezeigt. Die Switch-Anweisung wird durch die Break-Anweisung in der Bedingung von Wert 4 beendet.
switch (4, 2)
{
1 {"It is one."; Break}
2 {"It is two." ; Break }
3 {"It is three." ; Break }
4 {"It is four." ; Break }
3 {"Three again."}
}
It is four.
Syntax
Die vollständige Switch Anweisungssyntax lautet wie folgt:
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
oder
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Wenn keine Parameter verwendet werden, Switch wird eine genaue Übereinstimmung des Werts ohne Berücksichtigung der Groß-/Kleinschreibung durchgeführt. Wenn es sich bei dem Wert um eine Auflistung handelt, wird jedes Element in der Reihenfolge ausgewertet, in der er angezeigt wird.
Die Switch Anweisung muss mindestens eine Bedingungsanweisung enthalten.
Die Default-Klausel wird ausgelöst, wenn der Wert keiner der Bedingungen entspricht. Es entspricht einer Else-Klausel in einer If-Anweisung. In jeder Default Anweisung ist nur eine Switch Klausel zulässig.
Switch hat die folgenden Parameter:
| Parameter | BESCHREIBUNG |
|---|---|
| Platzhalter | Gibt an, dass es sich bei der Bedingung um eine Platzhalterzeichenfolge handelt. |
| Wenn die match-Klausel keine Zeichenfolge ist, lautet der Parameter | |
| ignoriert. | |
| Genau | Gibt an, dass die match-Klausel, wenn es sich um eine Zeichenfolge handelt, |
| genau übereinstimmen. Wenn es sich bei der match-Klausel nicht um eine Zeichenfolge handelt, wird dieser Parameter | |
| wird ignoriert. | |
| Führt eine Übereinstimmung unter Berücksichtigung der Groß-/Kleinschreibung durch. Wenn die match-Klausel nicht | |
| eine Zeichenfolge, wird dieser Parameter ignoriert. | |
| Datei | Nimmt Eingaben aus einer Datei anstelle einer Wertanweisung entgegen. Wenn |
| mehrere Dateiparameter sind enthalten, nur der letzte ist | |
| gebraucht. Jede Zeile der Datei wird von der | |
Switch Aussage. |
|
| Regex- | Führt einen Abgleich des Werts mit dem regulären Ausdruck |
| Zustand. Wenn die Option | |
| match-Klausel keine Zeichenfolge ist, wird dieser Parameter ignoriert. |
Hinweis
Beim Angeben von widersprüchlichen Werten wie Regex und Wildcard hat der letzte angegebene Parameter Vorrang, und alle widersprüchlichen Parameter werden ignoriert. Es sind auch mehrere Instanzen von Parametern zulässig. Allerdings ist nur der letzte verwendete Parameter wirksam.
In diesem Beispiel gibt es keinen übereinstimmenden Fall, sodass keine Ausgabe vorhanden ist.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
Durch Hinzufügen der Default Klausel können Sie eine Aktion ausführen, wenn keine anderen Bedingungen erfolgreich sind.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
Default {
"No matches"
}
}
No matches
Damit das Wort "vierzehn" mit einem Fall übereinstimmt, müssen Sie den parameter -Wildcard oder -Regex verwenden.
PS> switch -Wildcard ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
That's too many.
Im folgenden Beispiel wird der -Regex Parameter verwendet.
$target = 'user@contoso.com'
switch -Regex ($target)
{
'ftp\://.*' { "$_ is an ftp address"; Break }
'\w+@\w+\.com|edu|org' { "$_ is an email address"; Break }
'http[s]?\://.*' { "$_ is a web address"; Break }
}
user@contoso.com is an email address
Eine Switch Anweisungsbedingung kann wie folgt lauten:
- Ein Ausdruck, dessen Wert mit dem Eingabewert verglichen wird
- Ein Skriptblock, der zurückgegeben
$truewerden soll, wenn eine Bedingung erfüllt ist. Der Skriptblock erhält das aktuelle zu vergleichende Objekt in der$_automatischen Variablen und wird in seinem eigenen Gültigkeitsbereich ausgewertet.
Die Aktion für jede Bedingung ist unabhängig von den Aktionen in anderen Bedingungen.
Im folgenden Beispiel wird die Verwendung von Skriptblöcken als Switch Anweisungsbedingungen veranschaulicht.
switch ("Test")
{
{$_ -is [String]} {
"Found a string"
}
"Test" {
"This executes as well"
}
}
Found a string
This executes as well
Wenn der Wert mehreren Bedingungen entspricht, wird die Aktion für jede Bedingung ausgeführt. Verwenden Sie die Break Schlüsselwörter, Continue um dieses Verhalten zu ändern.
Das Break Schlüsselwort beendet die Verarbeitung und beendet die Switch Anweisung.
Das Continue Schlüsselwort beendet die Verarbeitung des aktuellen Werts, verarbeitet aber alle nachfolgenden Werte weiter.
Im folgenden Beispiel wird ein Array von Zahlen verarbeitet und angezeigt, ob sie ungerade oder gerade sind. Negative Zahlen werden mit dem Continue Schlüsselwort übersprungen. Wenn keine Zahl auftritt, wird die Ausführung mit dem Break Schlüsselwort beendet.
switch (1,4,-1,3,"Hello",2,1)
{
{$_ -lt 0} { Continue }
{$_ -isnot [Int32]} { Break }
{$_ % 2} {
"$_ is Odd"
}
{-not ($_ % 2)} {
"$_ is Even"
}
}
1 is Odd
4 is Even
3 is Odd