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
Décrit une instruction que vous pouvez utiliser pour quitter immédiatement les instructions Foreach, For, While, Do ou Switch.
DESCRIPTION DÉTAILLÉE
Lorsqu’une instruction Break apparaît dans une boucle, telle qu’une boucle Foreach, For ou While, l’instruction Break oblige PowerShell à quitter immédiatement la boucle. Dans une construction Switch, Break fait sortir PowerShell du bloc de code Switch.
Une instruction Break peut inclure une étiquette qui vous permet de quitter les boucles intégrées. Une étiquette peut spécifier n’importe quel mot-clé de boucle, tel que Foreach, For ou While, dans un script.
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. Même si l’instruction For prend la valeur True jusqu’à ce que $i soit supérieur à 10, PowerShell atteint l’instruction break la première fois que la boucle For est exécutée.
Il est plus courant d’utiliser l’instruction Break dans une boucle où une condition interne doit être remplie. Prenons l’exemple d’instruction Foreach suivant :
$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 le tableau $varB. Chaque fois que le bloc de code est exécuté, la variable $i est incrémentée de 1. L’instruction If attribue la valeur False les deux premières fois que la boucle est exécutée. La troisième fois que la boucle est exécutée, $i est égal à 3 et la variable $val est égale à 30. À ce stade, l’instruction Break s’exécute et la boucle Foreach se termine.
Vous sortez des autres instructions en boucle de la même manière que vous sortez de 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, PowerShell quitte la boucle étiquetée au lieu de quitter la boucle actuelle. La syntaxe d’une étiquette est la suivante (cet exemple montre 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 elle doit être suivie du mot-clé en boucle, tel que While.
Dans 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 intégrées, le résultat est différent de celui du mot-clé Break lorsqu’il est utilisé seul. Cet exemple schématique comporte 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 prend la valeur True, l’exécution du script passe à l’instruction après la boucle étiquetée. Dans l’exemple, l’exécution recommence avec l’instruction « $a = $c ».
Vous pouvez imbriquer de nombreuses boucles étiquetées, comme illustré dans l’exemple schématique suivant.
:red while (<condition1>) {
:yellow while (<condition2>) {
while (<condition3>) {
if ($a) {break}
if ($b) {break red}
if ($c) {break yellow}
}
Write-Host "After innermost loop"
}
Write-Host "After yellow loop"
}
Write-Host "After red loop"
Si la variable $b est évaluée à True, l’exécution du script reprend après la boucle étiquetée « red ». Si la variable $c est évaluée à True, l’exécution du contrôle de script reprend après la boucle étiquetée « yellow ».
Si la variable $a est évaluée à True, l’exécution reprend après la boucle la plus interne. Aucune étiquette n’est nécessaire.
PowerShell ne limite pas la distance à laquelle les étiquettes peuvent reprendre l’exécution. L’étiquette peut même passer le contrôle entre les limites des appels de script et de fonction.
Le mot-clé Break est utilisé pour quitter la construction Switch. Par exemple, l’instruction Switch suivante utilise les instructions Break pour tester la condition la 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 à une valeur de chaîne de caractères « word2 ». L’instruction Switch utilise la classe Regex pour faire correspondre la valeur de la variable en premier avec le terme « word2 ». (La classe Regex est une classe d’expression régulière Microsoft .NET Framework.) Étant donné que 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 PowerShell atteint la première instruction Break, l’instruction Switch se ferme. 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.