Dans cet article, nous passerons en revue les boucles For, While, Do-While et Do-Until de PowerShell. Je vais expliquer comment les boucles PowerShell sont construites et comment définir des conditions pour entrer ou sortir d’une boucle.
Boucle For de PowerShell
La boucle For est une boucle de comptage, principalement utilisée lorsque vous avez besoin de répéter une tâche un certain nombre de fois, de traiter une collection ou de spécifier des éléments par un numéro d’index. Elle se répète tant que la condition de test est évaluée à vrai et sort sur faux.

La syntaxe d’une boucle For est la suivante:
for (<Init>; <Condition>; <Repeat>) { <Script Block> }
- Le bloc <Init> exécute une commande ou un ensemble de commandes avant que la boucle ne commence. Habituellement, c’est à cet endroit que vous initialisez la variable de comptage.
- Dans la section <Condition>, vous évaluez le test conditionnel. S’il est vrai, vous entrez dans la boucle et exécutez les commandes du bloc de script. Ensuite, la condition est réévaluée jusqu’à ce qu’elle soit fausse.
- La balise <Repeat> exécute une ou plusieurs commandes, séparées par des virgules à chaque itération de la boucle. Elle est généralement utilisée pour modifier la variable de comptage.
Si vous souhaitez répéter une opération spécifique cinq fois, utilisez l’exemple suivant:
Découvrez quelles données sensibles sont stockées où, évaluez les risques qui y sont associés et mettez en place des mesures de protection des données basées sur des politiques avec DataSecurity Plus, le logiciel de protection des données de ManageEngine. Commencez dès aujourd’hui avec un essai gratuit entièrement fonctionnel de 30 jours.
for ($var = 1; $var -le 5; $var++) { Write-Host The value of Var is: $var } Write-Host End of for loop.

Ici, la variable est initialisée avec une valeur de 1, qui est inférieure à 5, donc vous entrez dans la boucle et exécutez le bloc de script. À chaque itération, la valeur de la variable est incrémentée de 1 et évaluée par rapport à la condition jusqu’à ce que le résultat soit faux.
Comme la condition est évaluée au début, si le résultat est faux, le bloc de commande ne sera pas exécuté :
for ($var = 6; $var -le 5; $var++) { Write-Host The value of Var is: $var } Write-Host End of for loop.

Si nécessaire, vous pouvez utiliser des opérateurs logiques pour spécifier plus de conditions. Dans ce cas, nous avons ajouté plusieurs conditions. Et parce que l’opérateur logique -et ne renvoie vrai que lorsque les deux conditions sont vraies, la boucle s’arrête lorsque l’expression $var -ne 3 atteint un état faux.
for ($var = 1; $var -le 5 -and $var -ne 3; $var++) { Write-Host The value of Var is: $var } Write-Host End of for loop.

Comme mentionné précédemment, vous pouvez exécuter une ou plusieurs commandes dans les espaces réservés <Init> et <Repeat>. Dans l’exemple ci-dessous, nous avons une variable $var1 avec une valeur initiale de 1, qui s’incrémente, et sa valeur est évaluée pour vérifier si elle est inférieure ou égale à 5.
Cependant, nous avons également une deuxième variable, $var2. Elle a une valeur initiale de 5, qui est décrémentée mais n’est pas évaluée en tant que partie de la condition.
for (($var1 = 1), ($var2 = 5); $var1 -le 5; ($var1++), ($var2--)) { Write-Host The value of Var1 is: $var1 Write-Host The value of Var2 is: $var2 } Write-Host End of for loop.

Comment définir les conditions de boucle PowerShell
En PowerShell, les commandes sont exécutées séquentiellement. Mais parfois, vous pouvez avoir besoin de répéter une commande ou un ensemble de commandes jusqu’à ce qu’une certaine condition soit remplie. Cela s’appelle une boucle.
Pour définir les conditions d’entrée ou de sortie d’une boucle en PowerShell, vous devez utiliser des opérateurs de comparaison. Ils vous permettront de comparer des valeurs ou de trouver une valeur qui correspond à un motif spécifique. Le résultat est une valeur Booléenne ( vrai ou faux), qui est évaluée par la logique de boucle.
Vous pouvez utiliser des opérateurs de comparaison pour comparer des valeurs numériques:
Operation | Result |
2 -eq 2 | True |
2 -eq 5 | False |
3 -gt 7 | True |
5 -lt 3 | False |
Vous pouvez également comparer des valeurs de chaîne avec des opérateurs de comparaison:
Sachez quelles données sensibles sont stockées où, évaluez les risques associés et mettez en œuvre des mesures de protection des données basées sur des politiques avec DataSecurity Plus, le logiciel de protection des données de ManageEngine. Commencez dès aujourd’hui avec un essai gratuit et entièrement fonctionnel de 30 jours.
Operation | Result |
‘PowerShell’ -eq ‘powershell’ | True |
‘PowerShell’ -eq ‘cmd’ | False |
‘PowerShell’ -like ‘power*’ | True |
‘PowerShell’ -notlike ‘*shell’ | False |
Boucle Foreach PowerShell
La boucle Foreach est utilisée pour itérer à travers les éléments d’une collection. Dans ce scénario, vous n’avez pas de condition à évaluer, mais la boucle se répète jusqu’à ce que tous les éléments de la collection aient été traités.
<Figure Foreach_Diagram.png> The syntax for a Foreach loop is the following: foreach ($<item> in $<collection) { <Script Block> }
Ici, nous commençons par l’instruction foreach, suivie de crochets avec une variable et une collection à itérer. Ensuite vient le bloc de script à exécuter. La variable est créée automatiquement et elle reçoit une valeur du tableau avant chaque exécution de la boucle.
Encore une fois, pour exécuter la boucle cinq fois, vous aurez besoin d’une collection avec cinq éléments. Dans ce cas, ce seront les valeurs entières de 1 à 5:
$collection = 1..5 foreach ($item in $collection) { Write-Host The value of Item is: $item } Write-Host End of foreach loop

La variable est initialisée avec la première valeur de la collection, qui est 1, puis le bloc de script est exécuté. À la prochaine itération, la variable reçoit la valeur suivante du tableau, qui est 2. Le bloc de script sera traité encore et encore jusqu’à ce que tous les éléments de la collection soient traités.
Par exemple, si vous souhaitez traiter les cinq premiers services fonctionnant sur votre ordinateur, votre boucle ressemblerait à ceci:
foreach ($service in (Get-Service | Select-Object -First 5)) { Write-Host Service name is: $service.name and status is $service.status }

Vous devez comprendre qu’il y a une différence entre la boucle Foreach et l’instruction Foreach-Object. Il est facile de les confondre. Une boucle Foreach commence toujours par une instruction Foreach, alors que la commande Foreach-Object suivra une commande avec un pipeline car elle traite les objets envoyés à travers elle.
Boucle While de PowerShell
La déclaration While en PowerShell est utilisée pour créer une boucle qui exécute une commande ou un ensemble de commandes si la condition est évaluée à true. Elle vérifie la condition avant d’exécuter le bloc de script. Tant que la condition est true, PowerShell exécutera le bloc de script jusqu’à ce que la condition donne false.

La syntaxe d’une boucle while est la suivante :
while (<Condition>){<Script Block>}
Par exemple, si vous avez une variable nommée var avec une valeur initiale de 1 et que vous souhaitez répéter la boucle cinq fois, la boucle doit suivre cette structure :
Identifiez où sont stockées les données sensibles, évaluez les risques associés et mettez en œuvre des mesures de protection des données basées sur des politiques avec DataSecurity Plus, le logiciel de protection des données de ManageEngine. Commencez dès aujourd’hui avec un essai gratuit entièrement fonctionnel de 30 jours.
$var = 1 while ($var -le 5) { Write-Host The value of Var is: $var $var++ } Write-Host End of While loop.

Dans l’exemple ci-dessus, la variable est initialisée en dehors de la boucle et incrémentée dans le bloc de script. La commande Write-Host est utilisée pour afficher la valeur de la variable à chaque cycle de la boucle.
Il est important de noter que si la condition est initialement false, alors la boucle ne sera pas déclenchée. Dans notre exemple, si nous avions une valeur pour la variable (var = 6), alors la commande de boucle n’aurait pas du tout fonctionné et le bloc de script n’aurait pas été exécuté.
$var = 6 while ($var -le 5) { Write-Host The value of Var is: $var $var++ } Write-Host End of While loop.

Vous pouvez utiliser des conditions plus complexes en utilisant des opérateurs logiques. Par exemple, si vous souhaitez que la variable soit inférieure à 5 et différente de 3, la boucle ressemblerait à ceci:
$var = 1 while ($var -le 5 -and $var -ne 3) { Write-Host The value of Var is: $var $var++ } Write-Host End of While loop.

Comme mentionné précédemment, lors de l’utilisation de l’opérateur logique -et, le résultat est true uniquement lorsque les deux tests conditionnels évaluent à true. Dans ce cas, lorsque la variable se voit attribuer la valeur 3, la deuxième condition devient false: Cela conduit à un résultat false, arrêtant la boucle.
Boucle Do-While PowerShell
A Do-While loop is a variant of the While loop, and the main difference is that the script block is executed before the condition is checked. This means that even if the start condition is false, the script block will be executed at least once.

La syntaxe d’une boucle Do-While est la suivante:
do { <script block> } while (<condition>)
Donc, si nous utilisons le même exemple qu’auparavant, le code ressemblerait à ceci:
$var = 1 do { Write-Host The value of Var is: $var $var++ } while ($var -le 5) Write-Host End of Do-While loop.

Exécutons une boucle Do-While avec une valeur pour la variable var = 6. Ici, la boucle sera quand même exécutée une fois avant de vérifier que la condition était false.
$var = 6 do { Write-Host The value of Var is: $var $var++ } while ($var -le 5) Write-Host End of Do-While loop.

Encore une fois, l’utilisation d’opérateurs logiques est également possible. Si nous utilisons le même exemple qu’auparavant, vous verrez que la boucle s’arrête lorsque la valeur de la variable est 3 car nous voulions que notre variable soit inférieure à 5 et différente de 3:
Découvrez quelles données sensibles sont stockées où, évaluez les risques associés, et mettez en place des mesures de protection des données basées sur des politiques avec DataSecurity Plus, le logiciel de protection des données de ManageEngine. Commencez dès aujourd’hui avec une version d’essai entièrement fonctionnelle de 30 jours.
$var = 1 do { Write-Host The value of Var is: $var $var++ } while ($var -le 5 -and $var -ne 3) Write-Host End of Do-While loop.

Boucle Do-Until PowerShell
La boucle Do-Until fonctionne de la même manière que la boucle Do-While : elle exécute d’abord le bloc de script puis évalue la condition. La différence ici est que tandis que la boucle Do-While entre dans la boucle avec une condition vraie, la boucle Do-Until recherche une condition fausse pour entrer dans la boucle.

La syntaxe d’une boucle Do-Until est la suivante :
do { <script block> } until (<condition>)
Comme vous le voyez, la structure ressemble presque identiquement à une boucle Do-While. Cependant, voyons ce que serait le résultat si nous continuions d’utiliser notre exemple précédent :
$var = 1 do { Write-Host The value of Var is: $var $var++ } until ($var -le 5) Write-Host End of Do-Until loop.

Comme le test conditionnel évalue à vrai, la boucle Do-Until n’est pas déclenchée car nous avons besoin d’un résultat faux pour entrer dans la boucle. Dans ce cas, si vous souhaitez répéter la boucle 5 fois, l’opérateur logique doit être modifié en supérieur à (-gt), ce qui fournira un résultat faux pour les 5 premières itérations :
$var = 1 do { Write-Host The value of Var is: $var $var++ } until ($var -gt 5) Write-Host End of Do-Until loop.

Encore une fois, comme nous avons besoin que la condition initiale soit fausse pour entrer et rester dans la boucle, cela affecterait également les opérateurs logiques si nous devions définir une expression plus complexe.
Dans l’exemple suivant, nous devons utiliser l’opérateur ou pour que la boucle se répète jusqu’à ce que notre variable soit supérieure à 5 (résultat faux requis) ou égale à 3. Nous ne pouvions pas utiliser l’opérateur et, qui aurait nécessité que la variable soit à la fois supérieure à 5 et égale à 3 en même temps car cela aurait entraîné une boucle infinie.
$var = 1 do { Write-Host The value of Var is: $var $var++ } until ($var -gt 5 -or $var -eq 3) Write-Host End of Do-Until loop.

Comment contrôler les boucles PowerShell
Vous pouvez contrôler le déroulement de l’exécution dans une boucle en utilisant des mots-clés pour soit quitter la boucle sans évaluer la condition, soit passer à l’itération suivante de la boucle. Bien que ces mots-clés puissent parfois être utiles, ils ne sont pas toujours recommandés car ils peuvent rendre le script plus difficile à lire.
L’instruction break
L’instruction break arrête et quitte immédiatement la boucle en cours sans exécuter le reste du code dans le bloc de script de la boucle, et sans évaluer la condition spécifiée. Cela permet à PowerShell de continuer à exécuter le reste du code.
Le mot-clé break se comporte de la même manière quel que soit le type de boucle utilisé. En reprenant l’un des exemples ci-dessus, nous compterons de 1 à 5 et sortirons de la boucle si la variable de comptage est égale à trois. Mais cette fois, nous ajouterons un break au lieu d’utiliser des opérateurs logiques dans la condition de test.
Identifiez quelles données sensibles sont stockées où, évaluez les risques qui y sont associés et mettez en œuvre des mesures de protection des données basées sur des politiques avec DataSecurity Plus, le logiciel de protection des données de ManageEngine. Commencez dès aujourd’hui avec un essai gratuit entièrement fonctionnel de 30 jours.
Pour ce faire, l’instruction if sera utilisée pour définir les critères de sortie.
For ($var = 1; $var -le 5; $var++) { if ($var -eq 3) {break} Write-Host The value of Var is: $var } Write-Host End of for loop.

Lorsque la valeur de la variable de comptage est égale à 3, l’instruction if est déclenchée et le mot-clé break est exécuté. Comme le mot-clé break est placé avant la commande Write-Host dans le bloc de script, cette dernière ne sera pas traitée. La boucle s’arrête et le script continue d’exécuter le code restant.
L’instruction continue
L’instruction continue vous permet de sauter la partie restante du code, vous ramenant au début de la boucle sans la quitter.
Comme dans l’exemple précédent, une boucle For sera utilisée, mais cette fois au lieu d’exiter la boucle lorsque la variable de comptage atteint 3, PowerShell sautera le reste du code pour l’itération actuelle et procédera avec la boucle jusqu’à ce que le test conditionnel soit faux.
for ($var = 1; $var -le 5; $var++) { if ($var -eq 3) {Continue} Write-Host The value of Var is: $var } Write-Host End of for loop.

Comme vous avez pu le remarquer, lorsque la valeur de la variable est égale à 3, l’instruction if est déclenchée, exécutant l’instruction continue. Elle saute alors le reste du code à l’intérieur de la boucle sans la rompre.
Conclusion
PowerShell prend en charge divers types de boucles, et il est vraiment important de comprendre comment elles peuvent vous aider à simplifier vos scripts et à répéter certaines actions de manière cohérente. Nous avons couvert intensivement des astuces et des conseils PowerShell sur Petri, alors assurez-vous de consulter nos autres guides sur la façon de écrire des scripts PowerShell et sur la façon d’utiliser l’option ForEach en parallèle.
Article connexe:
Source:
https://petri.com/how-to-use-powershell-for-while-loops/