Aller au contenu

Principes de base de PowerShell : programmation avec des boucles

    1651882981

    Dans ce didacticiel PowerShell, nous vous montrons comment utiliser la boucle For, la boucle ForEach-Object et les boucles While, Do-While et Do-Until.

    Les boucles PowerShell, dans leur forme la plus élémentaire, répètent simplement le même ensemble de commandes un certain nombre de fois. Idéales pour effectuer des actions cohérentes pendant une période de temps définie ou un certain nombre d’enregistrements, les boucles peuvent grandement simplifier vos scripts. PowerShell en particulier propose un certain nombre d’applets de commande, notamment celles qui commencent par le verbe Get, qui renvoient des objets contenant un grand nombre de données similaires.

    Il existe plusieurs types de boucles disponibles dans PowerShell et, dans de nombreux cas, plusieurs techniques de boucle peuvent être utilisées efficacement. Il est parfois nécessaire de déterminer le type de boucle le plus efficace, que ce soit du point de vue des performances ou de la lisibilité du code.

    Boucle ForEach-Object

    Dans de nombreux cas, l’applet de commande ForEach-Object (précédemment abordée dans notre article sur l’utilisation d’objets PowerShell) est le meilleur moyen de parcourir un objet. Au plus simple, ForEach-Object ne nécessite qu’un objet à boucler et un bloc de script contenant les commandes à exécuter sur chaque membre de l’objet.

    Ces paramètres peuvent être spécifiés soit par les noms de paramètres -InputObject et -Process, soit en dirigeant l’objet vers l’applet de commande ForEach-Object et en plaçant le bloc de script comme premier paramètre. Pour illustrer cette syntaxe de base, l’exemple suivant montre deux méthodes d’utilisation de ForEach-Object pour parcourir le contenu du dossier Documents d’un utilisateur :

    $myDocuments = Get-ChildItem $env:USERPROFILEDocuments -File $myDocuments | ForEach-Object {$_.FullName} ForEach-Object -InputObject $myDocuments -Process {$_.FullName}

    Dans certains scénarios, il peut être avantageux d’effectuer une ou plusieurs actions juste avant ou juste après l’exécution de la boucle. Les paramètres -Begin et -End peuvent être utilisés pour définir des blocs de script à exécuter juste avant ou après le contenu du bloc de script -Process. Cela peut être utilisé pour définir ou modifier une variable avant ou après l’exécution de la boucle.

    ForEach-Object a deux alias, ForEach et %, et prend également en charge la syntaxe abrégée à partir de PowerShell 3.0. Les trois exemples suivants ont une fonction identique.

    Get-WMIObject Win32_LogicalDisk | ForEach-Object {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | ForEach {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | % Espace libre

    PowerShell pour la boucle

    Les boucles for sont généralement utilisées pour parcourir un ensemble de commandes un nombre de fois spécifié, soit pour parcourir un tableau ou un objet, soit simplement pour répéter le même bloc de code selon les besoins. Une boucle For est construite en définissant la valeur d’une variable lors de l’entrée dans la boucle, la condition sur laquelle la boucle doit être terminée et une action à effectuer sur cette variable à chaque fois dans la boucle.

    L’exemple suivant montre une boucle For de base utilisée pour créer une table de multiplication :

    Pour ($i=0; $i -le 10; $i++) { « 10 * $i =  » + (10 * $i) }

    Les boucles For peuvent être utilisées pour parcourir les valeurs du tableau en définissant la valeur initiale sur l’index initial du tableau et en augmentant progressivement la valeur jusqu’à ce que la longueur du tableau soit atteinte. L’index du tableau est spécifié en plaçant la variable incrémentée entre crochets juste après le nom de la variable, comme illustré dans l’exemple suivant :

    $colors = @(« Rouge », »Orange », »Jaune », »Vert », »Bleu », »Indigo », »Violet ») Pour ($i=0 ; $i -lt $colors.Length ; $ i++) { $couleurs[$i] }

    Boucles While, Do-While et Do-Until

    Un troisième type de boucle pris en charge par PowerShell consiste à définir une condition qui permet à la boucle de traiter tant que la condition est vraie ou jusqu’à ce qu’elle soit remplie. Les boucles While et Do-While sont toutes deux utilisées pour effectuer une action alors que la condition est évaluée à $true, et ne diffèrent que par leur syntaxe. Les boucles Do-Until ont une syntaxe similaire à Do-While, mais arrêtent le traitement une fois que la condition est remplie.

    Les boucles Do-While et Do-Until commencent toutes deux par le mot-clé Do précédant un bloc de script, suivi du mot-clé de condition (While ou Until) et de la condition. A titre d’exemple les deux boucles suivantes fonctionnent de manière identique, seule la condition est inversée :

    $i=1 Faire { $i $i++ } Tant que ($i -le 10)$i=1 Faire { $i $i++ } Jusqu’à ($i -gt 10)

    Bien que les boucles fonctionnent de la même manière que les boucles Do-While, seule la syntaxe est légèrement modifiée. Les boucles While n’utilisent que le mot-clé While, suivi de la condition et enfin du bloc de script. Cette boucle a une fonction identique aux exemples précédents et utilise la même condition que la boucle Do-While :

    $i=1 Tant que ($i -le 10) { $i $i++ }

    N’importe lequel de ces trois types de boucles — boucles Do-While, Do-Until et While — peut également être utilisé pour boucler indéfiniment ; Boucles While et Do-While avec la condition définie sur $true et Do-Until avec la condition définie sur $false.

    Dans certaines situations, vous devrez peut-être quitter une boucle plus tôt en fonction de quelque chose d’autre que la condition des boucles. Dans ce cas, le mot-clé Break peut être invoqué pour sortir de la boucle. Ce dernier exemple montre la même fonctionnalité, mais utilise une boucle infinie et le mot-clé Break pour sortir au moment opportun :

    $i=1 Tant que ($true) { $i $i++ if ($i -gt 10) { Break } }

    EN RELATION:

    Opérateurs de comparaison PowerShell et logique conditionnelle
    PowerShell : Utiliser des variables, des tableaux et des tables de hachage
    Principes de base de PowerShell : gestion des fichiers et des dossiers

    0 0 votes
    Rating post
    S’abonner
    Notification pour
    guest
    0 comments
    Commentaires en ligne
    Afficher tous les commentaires
    0
    Nous aimerions avoir votre avis, veuillez laisser un commentaire.x