Comment un PowerShell pour Loop peut exécuter une commande plusieurs fois

Comment un PowerShell pour Loop peut exécuter une commande plusieurs fois

La boucle FOR est l'un des outils les plus précieux de tout langage de programmation, et Microsoft PowerShell n'est pas différent. Vous pouvez utiliser d'autres boucles pour répéter les commandes, mais la boucle FOR est peut-être la plus simple.

De l'itération des tableaux à l'exécution d'une fonction un nombre prédéterminé de fois, il y a beaucoup de choses que vous pouvez réaliser avec cet outil. Voici un tutoriel sur la façon d'utiliser pour les boucles dans PowerShell.

Table des matières

    Vous pouvez générer des séquences de nombres, déterminer un nombre premier ou afficher une minuterie à compte à rebours. Plus pratiquement, vous pouvez itérer sur un éventail d'objets, effectuant une certaine action à chaque entrée.

    La syntaxe d'une boucle pour PowerShell

    Pour les boucles, les boucles fonctionnent dans Windows PowerShell de la même manière que dans n'importe quel langage de programmation. Les expressions initialisant la variable de suivi, testant sa valeur et modifiant la variable sont installées entre les crochets après «pour», séparés par semiColons. Vient ensuite la liste des instructions elle-même liée par des accolades bouclées.

    Pour (Initialisation; Condition; Mise à jour)

    Bloc de script

    Comment utiliser la boucle pour un script PowerShell

    L'utilisation de la boucle pour est assez simple. Chaque fois que vous rencontrez une situation qui appelle à répéter une étape légèrement variable, vous devez le mettre dans une boucle pour.

    Disons que vous devez écrire un extrait de code qui peut trouver la somme de tous les nombres naturels jusqu'à un numéro n, contenu dans la variable $ n. Voici un exemple de base pour Loop:

    $ n = 10

    $ sum = 0

    Pour ($ i = 1; $ i -le $ n; $ i ++)

    $ sum = $ sum + $ i

    "La somme de $ N Natural Numbers est $ SUM"

    Accéder aux tableaux via une boucle pour

    La génération de séquences numériques n'est guère ce que la plupart des gens utilisent PowerShell pour. Une utilisation plus courante consiste à itérer sur un tableau.

    Dites que vous avez un tableau $ Week avec sept éléments. Vous pouvez publier la liste des jours contenus dans le tableau à l'aide d'une boucle simple, comme démontré dans l'exemple suivant.

    Pour ($ i = 0; $ i -lt $ semaine.Longueur ; $ i ++)

    $ semaine [$ i]

    Utiliser la boucle foreach pour parcourir rapidement un tableau

    Une autre forme de la boucle pour. Cette version simplifie le contenu d'un tableau PowerShell et les traitant individuellement. L'extrait de code précédent, par exemple, peut être réécrit comme ceci:

    Foreach ($ day in $ week)

    $ jour

    Lorsque vous traitez avec des objets plus complexes, vous pouvez également utiliser la cmdlet ForEach-Object pour effectuer une action sur le contenu de toute commande PowerShell.

    En quoi la boucle pour les autres types de boucles?

    La boucle pour ne n'est pas le seul type de déclaration de boucle à votre disposition. Comme la plupart des langages de programmation, PowerShell a plusieurs types de boucles.

    Alors que

    Le plus simple d'entre eux est la boucle while. Tout ce que vous avez est une condition et un bloc de script, et la boucle fonctionne tant que l'expression du test évalue à vrai. Étant donné que l'expression est évaluée en premier, il y a une chance pour le code de ne pas s'exécuter du tout ou de finir comme une boucle infinie.

    Alors que (Condition)

    Bloc de script

    Faire pendant

    Si vous écrivez un script qui doit s'exécuter au moins une fois - même si l'expression évalue en faux, vous pouvez utiliser la boucle à faire. La seule différence par rapport à la boucle while est qu'elle place le bloc de commande avant la condition, ce qui signifie que le code est exécuté avant que l'expression du test ne soit vérifiée pour la première fois.

    Faire

    Bloc de script

    Alors que (Condition)

    Faire jusqu'à ce que

    Une autre version de cette boucle est le faire du t-in. Fondamentalement, il exécute le bloc de code, puis le répète jusqu'à ce que l'expression du test soit vraie - l'inverse d'une boucle à faire. Pas une structure particulièrement utile, car vous pouvez réaliser la même chose en modifiant la condition dans une boucle à faire standard.

    Faire

    Bloc de script

    Jusqu'à (Condition)

    Pourquoi la boucle pour

    Le problème avec toutes ces autres structures de boucle est qu'ils n'incluent pas la valeur initiale ou les instructions de mise à jour. Vous devez vous souvenir manuellement de créer une variable à l'extérieur de la boucle, puis l'incrémenter (ou la décrémenter) pendant chaque passe de la boucle.

    Comme vous pouvez vous y attendre, les programmeurs oublient souvent cette étape, conduisant à un script qui ne fonctionne pas comme prévu. Cela gaspille le temps précieux dans le débogage.

    La boucle pour évite ce problème en nécessitant les expressions d'initialisation et d'incrément dans les supports de départ. Cela conduit à des scripts plus propres et plus robustes.

    Quand devriez-vous utiliser la boucle pour PowerShell?

    PowerShell consiste à créer des scripts pour l'automatisation. Et probablement l'outil le plus utile pour y parvenir est la boucle pour. Vous pouvez l'utiliser pour remplacer de nombreuses opérations de copie-coller par un script plus compact et élégant.

    La fonction la plus courante de cette boucle est d'itérer sur un tableau, une entrée à la fois. Pour un script encore plus rationalisé, vous pouvez également utiliser une boucle foreach. Vous pouvez également utiliser la boucle pour générer des séquences numériques, bien que ce soit rarement nécessaire.

    Les scores de boucle FOR sur d'autres algorithmes de boucle en incluant toutes les fonctions essentielles d'une boucle dans les paramètres, empêchant toute erreur due à l'oubli de ces déclarations. Cela rend la boucle pour indispensable dans n'importe quel scénario appelant à répéter un ensemble de commandes.