about_Switch

Mis à jour: mai 2014

S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

RUBRIQUE

about_Switch

DESCRIPTION COURTE

Explique comment utiliser un commutateur pour gérer plusieurs instructions If.

DESCRIPTION DÉTAILLÉE

Pour vérifier une condition d'un script ou d'une fonction, utilisez une instruction If. L'instruction If peut vérifier plusieurs 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 est cependant plus simple. L'instruction Switch répertorie chaque condition, ainsi que l'action facultative qui lui est associée. Si une condition est satisfaite, l'action est effectuée.

Une instruction Switch de base est au format suivant :

        Switch (<test-value>)
        {
            <condition> {<action>}
            <condition> {<action>}
       }

Par exemple, l'instruction Switch suivante compare la valeur de test (3) à chacune des conditions. Quand la valeur de test correspond à la condition, l'action est effectuée.

        PS> 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 comporte deux conditions pour la valeur 3. L'exemple montre donc que, par défaut, toutes les conditions sont testées.

        PS> 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 indiquer à l'instruction Switch d'arrêter la comparaison une fois qu'une correspondance a été trouvée, utilisez l'instruction Break. L'instruction Break arrête l'instruction Switch.

        PS> 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 testent la valeur 4, puis la valeur 2.

         PS> 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.

Les instructions Break s'appliquent à la collection, et non à chaque valeur, comme le montre l'exemple suivant. L'instruction Switch est arrêtée par l'instruction Break quand la valeur 4 est trouvée.

         PS> 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 de l'instruction Switch est la suivante :

        switch [-regex|-wildcard|-exact][-casesensitive] (<value>)

ou

        switch [-regex|-wildcard|-exact][-casesensitive] -file filename

suivi de

        { 
            "string"|number|variable|{ expression } { statementlist }
            default { statementlist } 
        }

Si aucun paramètre n'est utilisé, l'instruction Switch recherchera une correspondance exacte de la valeur, sans prendre en compte la casse. 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 quand la valeur ne correspond à aucune des conditions. Elle est équivalente à une clause Else d'une instruction If. Seule une clause Default est autorisée pour chaque instruction Switch.

L'instruction Switch possède les paramètres suivants :

Regex

Effectue une correspondance d'expression régulière avec la valeur de la condition. Si vous utilisez Regex, Wildcard (caractère générique) et Exact sont ignorés. De plus, si la clause de correspondance n'est pas une chaîne, ce paramètre est ignoré.

                           Example:
                           PS> switch ("fourteen") 
                               {
                                   1 {"It is one."; Break}
                                   2 {"It is two."; Break}
                                   3 {"It is three."; Break}
                                   4 {"It is four."; Break}
                                   3 {"Three again."; Break}
                                   "fo*" {"That's too many."}
                               } 

                           PS> switch -Regex ("fourteen") 
                               {
                                   1 {"It is one."; Break}
                                   2 {"It is two."; Break}
                                   3 {"It is three."; Break}
                                   4 {"It is four."; Break}
                                   3 {"Three again."; Break}
                                   "fo*" {"That's too many."}
                               }
                        That's too many.

Wildcard

Indique que la condition est une chaîne générique. Si vous utilisez Wildcard, Regex (expression régulière) et Exact sont ignorés. De plus, si la clause de correspondance n'est pas une chaîne, ce paramètre est ignoré.

Exact

Indique que la clause de correspondance, s'il s'agit d'une chaîne, doit correspondre exactement. Si vous utilisez Exact, Regex (expression régulière) et Wildcard (caractère générique) sont ignorés. De plus, si la clause de correspondance n'est pas une chaîne, ce paramètre est ignoré.

CaseSensitive

Effectue une correspondance qui prend en compte la casse. Si la clause de correspondance n'est pas une chaîne, ce paramètre est ignoré.

Fichier

Prend son entrée à partir 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 l'instruction Switch.

Plusieurs instances de Regex, Wildcard et Exact sont autorisées. Toutefois, seul le dernier paramètre utilisé est appliqué.

Si la valeur satisfait plusieurs conditions, l'action associée à chaque condition est exécutée. Pour modifier ce comportement, utilisez les mots clés Break ou Continue.

Le mot clé Break arrête le traitement et quitte l'instruction Switch.

Le mot clé Continue continue le traitement de la valeur actuelle et de toutes les valeurs suivantes.

Si la condition est une expression ou un bloc de script, elle est évaluée juste avant d'être comparée à la valeur. La valeur est affectée à la variable automatique $_ et est disponible dans l'expression. La correspondance aboutit si l'expression est true ou correspond à la valeur. L'expression est évaluée dans sa propre portée.

Le mot clé Default spécifie une condition qui est évaluée uniquement lorsqu'aucune autre condition ne correspond à la valeur.

L'action associée à chaque condition est indépendante des actions des autres conditions. L'accolade fermante (}) contenue dans l'action correspond à un saut explicite.

VOIR AUSSI

about_Break

about_Continue

about_If

about_Script_Blocks