about_Break

Mis à jour: mai 2014

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

Insérez l'introduction ici.

RUBRIQUE

about_Break

DESCRIPTION COURTE

Décrit une instruction que vous pouvez utiliser pour quitter immédiatement une instruction Foreach, For, While, Do ou Switch.

DESCRIPTION DÉTAILLÉE

Lorsqu'une instruction Break s'affiche dans une boucle, comme une instruction Foreach, For, Switch, ou While, l'instruction Break oblige Windows PowerShell à quitter immédiatement la boucle. Dans une construction Switch qui ne boucle pas, Break force Windows PowerShell à quitter le bloc de code Switch.

Une instruction Break peut inclure une étiquette qui vous permet de quitter les boucles incorporées. Une étiquette peut spécifier n'importe quel mot clé de boucle, telle que Foreach, For ou While, dans un script. Lorsque vous utilisez une étiquette, Break quitte la boucle spécifiée. Break quitte la boucle spécifiée, quelle que soit la boucle dans laquelle se trouve l'instruction Break.

L'exemple suivant montre comment utiliser une instruction Break pour quitter une instruction For :

        for($i=1; $i -le 10; $i++)
        {
            Write-Host $i
            break
        }

Dans cet exemple, l'instruction Break quitte la boucle For lorsque la variable $i est égale à 1. Bien que l'instruction For ait la valeur True jusqu'à ce que $i soit supérieure à 10, Windows PowerShell atteint l'instruction Break lors de la première exécution de la boucle For.

Il est plus courant d'utiliser l'instruction Break dans une boucle dans laquelle une condition interne doit être satisfaite. Prenons l'exemple d'instruction Foreach suivante :

        $i=0
        $varB = 10,20,30,40
        foreach ($val in $varB)
        {    
            $i++
            if ($val -eq 30)
            {
                break
            }    
        }
        Write-Host "30 was found in array position $i"

Dans cet exemple, l'instruction Foreach itère au sein du tableau $varB. Chaque fois que le bloc de code est exécuté, la variable $i est incrémentée de 1. L'instruction If est analysée comme False lors des deux premières exécutions de la boucle. Lors de la troisième exécution de la boucle, $i est égale à 3 et la variable $val est égale à 30. À ce stade, l'instruction Break s'exécute et la boucle Foreach s'arrête.

Vous quittez les autres instructions de boucle de la même façon que vous quittez la boucle Foreach. Dans l'exemple suivant, l'instruction Break quitte une instruction While lorsqu'une exception DivideByZeroException est interceptée à l'aide de l'instruction Trap.

        $i = 3
        while ($true)
        {
            trap [DivideByZeroException] 
            {
                Write-Host "divide by zero trapped" 
                break
            }
            1 / $i--
        }

Une instruction Break peut inclure une étiquette. Si vous utilisez le mot clé Break avec une étiquette, Windows PowerShell quitte la boucle étiquetée au lieu de quitter la boucle active. La syntaxe d'une étiquette est la suivante (cet exemple illustre une étiquette dans une boucle While) :

        :myLabel while (<condition>) { <statement list>}

L'étiquette est un signe deux-points suivi d'un nom que vous attribuez. L'étiquette doit être le premier jeton d'une instruction et doit être suivi par le mot clé de boucle, tel que While.

Dans Windows PowerShell, seuls les mots clés de boucle, tels que Foreach, For et While peuvent avoir une étiquette.

Break déplace l'exécution hors de la boucle étiquetée. Dans les boucles incorporées, le résultat est différent de celui obtenu avec le mot-clé Break quand il est utilisé par lui-même. Cet exemple de schéma possède une instruction While avec une instruction For :

        :myLabel while (<condition 1>) 
        {
            for ($item in $items) 
            { 
                if (<condition 2>) { break myLabel } 
                $item = $x   # A statement inside the For-loop
            }
        }
        $a = $c  # A statement after the labeled While-loop

Si la condition 2 est analysée comme True, l'exécution du script passe à l'instruction après la boucle étiquetée. Dans l'exemple, l'exécution commence à nouveau avec l'instruction « $a = $c ».

Vous pouvez imbriquer des nombreuses boucles étiquetées, comme illustré dans l'exemple de schéma suivant.

        :red while (<condition1>)
        {
            :yellow while (<condition2>)
            {
                while (<condition3>)
                {
                    if ($a) {break}
                    if ($b) {break red}
                    if ($c) {break yellow}
                }
                # After innermost loop
            }
                # After \"yellow\" loop
        }
                # After \"red\" loop

Si la variable $b est analysée comme True, l'exécution du script reprend après la boucle intitulée « red ». Si la variable $c est analysée comme True, l'exécution du contrôle du script reprend après la boucle intitulée « yellow ».

Si la variable $a a la valeur True, l'exécution reprend après la boucle la plus intérieure. Aucune étiquette n'est nécessaire.

Windows PowerShell ne limite pas la distance à partir desquelles les étiquettes peuvent reprendre l'exécution. L'étiquette peut même passer le contrôle au travers des frontières de script et d'appel de fonction.

Le mot clé Break permet de quitter la construction Switch. Par exemple, l'instruction Switch suivante utilise les instructions Break pour tester la condition plus spécifique :

        $var = "word2"
        switch -regex ($var) 
        {
            "word2" 
            {
                Write-Host "Exact" $_ 
                break
            } 

            "word.*" 
            { 
                Write-Host "Match on the prefix" $_ 
                break
            }

            "w.*"
            {
                Write-Host "Match on at least the first letter" $_
                break 
            }
            
            default
            {
                Write-Host "No match" $_
                break
            }
        }

Dans cet exemple, la variable $var est créée et initialisée en une valeur de chaîne « word2 ». L'instruction Switch utilise la classe Regex pour faire correspondre d'abord la valeur de la variable avec le terme « word2 ». (La classe Regex est une classe Microsoft .NET Framework d'expressions régulières.) Comme la valeur de la variable et le premier test de l'instruction Switch correspondent, le premier bloc de code de l'instruction Switch s'exécute.

Lorsque Windows PowerShell atteint la première instruction Break, l'instruction Switch s'arrête. Si les quatre instructions Break sont supprimées de l'exemple, les quatre conditions sont remplies. Cet exemple utilise l'instruction Break pour afficher les résultats lorsque la condition la plus spécifique est remplie.

VOIR AUSSI

about_Comparison_Operato

about_Continue

about_For

about_Foreach

about_Switch

about_Throw

about_Trap

about_Try_Catch_Finally

about_While