À propos de Switch
DESCRIPTION COURTE
Explique comment utiliser un commutateur pour gérer plusieurs instructions If.
DESCRIPTION DÉTAILLÉE
Pour case activée une condition dans un script ou une fonction, utilisez une If
instruction. L’instruction If
peut case activée de nombreux types de conditions, y compris la valeur des variables et les propriétés des objets.
Pour case activée plusieurs conditions, utilisez une Switch
instruction. L’instruction Switch
équivaut à une série d’instructions If, mais elle est plus simple. L’instruction Switch
répertorie chaque condition et une action facultative. Si une condition est obtenue, l’action est effectuée.
L’instruction Switch
utilise également la $switch
variable automatique. Pour plus d’informations, consultez about_Automatic_Variables.
Une instruction de base Switch
a le format suivant :
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
Par exemple, l’instruction suivante Switch
compare la valeur de test, 3, à chacune des conditions. Lorsque la valeur de test correspond à la condition, l’action est effectuée.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
Dans cet exemple simple, la valeur est comparée à chaque condition de la liste, même s’il existe une correspondance pour la valeur 3. L’instruction suivante Switch
a deux conditions pour une valeur de 3. Il montre que, par défaut, toutes les conditions sont testées.
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.
Pour diriger le pour arrêter la Switch
comparaison après une correspondance, utilisez l’instruction Break
. L’instruction Break
met fin à l’instruction Switch
.
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.
Si la valeur de test est une collection, telle qu’un tableau, chaque élément de la collection est évalué dans l’ordre dans lequel il apparaît. Les exemples suivants évaluent 4, puis 2.
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.
Toutes Break
les instructions s’appliquent à la collection, et non à chaque valeur, comme illustré dans l’exemple suivant. L’instruction Switch
est terminée par l’instruction Break
dans la condition de valeur 4.
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
La syntaxe de l’instruction complète Switch
est la suivante :
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
ou
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Si aucun paramètre n’est utilisé, Switch
effectue une correspondance exacte qui ne respecte pas la casse pour la valeur. Si la valeur est une collection, chaque élément est évalué dans l’ordre dans lequel il apparaît.
L’instruction Switch
doit inclure au moins une instruction de condition.
La Default
clause est déclenchée lorsque la valeur ne correspond à aucune des conditions. Elle équivaut à une Else
clause dans une If
instruction. Default
Une seule clause est autorisée dans chaque Switch
instruction.
Switch
a les paramètres suivants :
Paramètre | Description |
---|---|
Caractère générique | Indique que la condition est une chaîne générique. |
Si la clause de correspondance n’est pas une chaîne, le paramètre est | |
Ignoré. | |
Exact | Indique que la clause de correspondance, s’il s’agit d’une chaîne, doit |
correspond exactement. Si la clause de correspondance n’est pas une chaîne, ce paramètre | |
est ignoré. | |
CaseSensitive | Effectue une correspondance respectant la casse. Si la clause de correspondance n’est pas |
chaîne, ce paramètre est ignoré. | |
File | Prend une entrée à partir d’un fichier plutôt que d’une instruction value. Si |
plusieurs paramètres de fichier sont inclus, seul le dernier est | |
Utilisé. Chaque ligne du fichier est lue et évaluée par le | |
Instruction Switch . |
|
Regex | Effectue une correspondance d’expression régulière de la valeur avec le |
condition. Si la | |
la clause de correspondance n’est pas une chaîne, ce paramètre est ignoré. |
Notes
Lorsque vous spécifiez des valeurs en conflit, comme Regex et Wildcard, le dernier paramètre spécifié est prioritaire et tous les paramètres en conflit sont ignorés. Plusieurs instances de paramètres sont également autorisées. Toutefois, seul le dernier paramètre utilisé est effectif.
Dans cet exemple, il n’y a pas de casse correspondante, donc il n’y a pas de sortie.
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."}
}
En ajoutant la Default
clause, vous pouvez effectuer une action quand aucune autre condition ne réussit.
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
Pour que le mot « quatorze » corresponde à un cas, vous devez utiliser le -Wildcard
paramètre ou -Regex
.
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.
L’exemple suivant utilise le -Regex
paramètre .
$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
Une Switch
condition d’instruction peut être :
- Expression dont la valeur est comparée à la valeur d’entrée
- Bloc de script qui doit retourner
$true
si une condition est remplie. Le bloc de script reçoit l’objet actuel à comparer dans la$_
variable automatique et est évalué dans sa propre étendue.
L’action de chaque condition est indépendante des actions dans d’autres conditions.
L’exemple suivant illustre l’utilisation de blocs de script comme Switch
conditions d’instruction.
switch ("Test")
{
{$_ -is [String]} {
"Found a string"
}
"Test" {
"This executes as well"
}
}
Found a string
This executes as well
Si la valeur correspond à plusieurs conditions, l’action pour chaque condition est exécutée. Pour modifier ce comportement, utilisez les Break
mots clés ou .Continue
Le Break
mot clé arrête le traitement et quitte l’instructionSwitch
.
Le Continue
mot clé arrête le traitement de la valeur actuelle, mais continue à traiter toutes les valeurs suivantes.
L’exemple suivant traite un tableau de nombres et s’affiche s’ils sont impairs ou pairs. Les nombres négatifs sont ignorés avec le Continue
mot clé. Si un autre nombre est rencontré, l’exécution s’arrête avec le Break
mot clé.
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