Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
DESCRIPTION COURTE
Explique comment utiliser un commutateur pour gérer plusieurs instructions If.
DESCRIPTION DÉTAILLÉE
Pour vérifier une condition dans un script ou une fonction, utilisez une instruction If. L’instruction If peut vérifier de nombreux types de conditions, y compris la valeur des variables et les propriétés des objets.
Pour vérifier plusieurs conditions, utilisez une instruction Switch. L’instruction Switch est équivalente à 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 à propos des variables automatiques.
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 Switch suivante 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 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 les Break instructions s’appliquent à la collection, et non à chaque valeur, comme illustré dans l’exemple suivant. L’instruction Switch est arrêté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.
Syntaxe
La syntaxe complète Switch de l’instruction 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 insensible à 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 clause Default est déclenchée lorsque la valeur ne correspond à aucune des conditions. Elle équivaut à une clause Else dans une instruction If.
Default Une seule clause est autorisée dans chaque Switch instruction.
Switch a les paramètres suivants :
| Paramètre | Descriptif |
|---|---|
| Génériques | Indique qu’il s’agit d’une chaîne générique. |
| Si la clause match n’est pas une chaîne, le paramètre est | |
| Ignoré. | |
| Exact | Indique que la clause match, s’il s’agit d’une chaîne, doit |
| correspondre exactement. Si la clause match n’est pas une chaîne, ce paramètre | |
| est ignoré. | |
| CaseSensitive | Effectue une correspondance sensible à la casse. Si la clause de correspondance n’est pas |
| une chaîne, ce paramètre est ignoré. | |
| Fichier | Prend l’entrée d’un fichier plutôt que d’une instruction de valeur. Si |
| plusieurs paramètres de fichier sont inclus, seul le dernier est | |
| utilisé. Chaque ligne du fichier est lue et évaluée par le | |
Switch déclaration. |
|
| regex | Effectue une correspondance d’expression régulière de la valeur avec le |
| condition. Si l’icône | |
| match n’est pas une chaîne de caractères, ce paramètre est ignoré. |
Remarque
Lorsque vous spécifiez des valeurs en conflit, telles que 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. Cependant, seul le dernier paramètre utilisé est effectif.
Dans cet exemple, il n’y a pas de cas correspondant afin qu’il n’y ait 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 paramètre -Wildcard 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 soit :
- Expression dont la valeur est comparée à la valeur d’entrée
- Un bloc de script qui doit retourner
$truesi une condition est remplie. Le bloc de script reçoit l’objet courant à comparer dans la$_variable automatique et est évalué dans sa propre portée.
L’action pour chaque condition est indépendante des actions dans d’autres conditions.
L’exemple suivant illustre l’utilisation de blocs de script en tant que 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 de chaque condition est exécutée. Pour modifier ce comportement, utilisez les mots clés ou Break les Continue mots clés.
Le Break mot clé arrête le traitement et quitte l’instruction Switch .
Le Continue mot clé cesse de traiter la valeur actuelle, mais continue de traiter 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 nombre non-nombre est rencontré, l’exécution est arrêtée 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