Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| dev:powershell:structures_de_controle [2023/06/21 16:39] – créée yoann | dev:powershell:structures_de_controle [2023/06/23 12:07] (Version actuelle) – yoann | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| {{tag> | {{tag> | ||
| - | |||
| - | :TODO: | ||
| ====== PowerShell : Les structures de contrôle ====== | ====== PowerShell : Les structures de contrôle ====== | ||
| + | ===== Les boucles ===== | ||
| + | |||
| + | ==== ForEach ==== | ||
| + | |||
| + | La boucle **ForEach** permet de traiter chaque éléments d'un tableau ou plus généralement d'un objet itérable : | ||
| + | |||
| + | <code powershell> | ||
| + | ForEach ($user in $users) { | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | A partir de PowerShell 7 une cmdlet **ForEach-Object** permet de paralléliser les traitements accélérant significativement le temps d' | ||
| + | <code powershell> | ||
| + | $users | ForEach-Object -Parallel { Set-ADUser $user -Department " | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== For ==== | ||
| + | |||
| + | La boucle **For** est utilisée dans les cas ou l'on souhaite répéter un nombre déterminé d' | ||
| + | |||
| + | <code powershell> | ||
| + | For($i=1; $i -le 10; $i++) { | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Do While ==== | ||
| + | |||
| + | Re-exécute un bloc d' | ||
| + | |||
| + | <code powershell> | ||
| + | # Repose la question tant que l' | ||
| + | # ne répond pas Oui | ||
| + | Do { | ||
| + | $userChoise = Read-Host -Prompt "Oui ou Non" | ||
| + | } While ($userChoise -ne " | ||
| + | </ | ||
| + | |||
| + | ==== Do Until ==== | ||
| + | |||
| + | Inversement, | ||
| + | |||
| + | <code powershell> | ||
| + | # Repose la question tant que l' | ||
| + | # pas Oui | ||
| + | Do { | ||
| + | $userChoise = Read-Host -Prompt "Oui ou Non" | ||
| + | } Until ($userChoise -eq " | ||
| + | </ | ||
| + | |||
| + | ==== While ==== | ||
| + | |||
| + | La boucle While commence par évaluer la condition avant l' | ||
| + | |||
| + | <code powershell> | ||
| + | $userChoise = ' | ||
| + | |||
| + | # La variable est initialisée à ' | ||
| + | # le bloc ci-dessous ne sera pas exécuté | ||
| + | While ( $userChoise -eq ' | ||
| + | $userChoise = Read-Host -Prompt "Oui ou Non" | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Break et Continue ==== | ||
| + | |||
| + | Les instructions **Break** et **Continue** permettent de modifier le comportement par défaut des boucles : | ||
| + | * **Continue** interrompt l' | ||
| + | * **Break** arrête complètement le traitement de la boucle. | ||
| + | |||
| + | Ces instructions peuvent être utilisées par exemple pour interrompre les traitements lorsque des données sont considérées invalides. | ||
| + | |||
| + | <code powershell> | ||
| + | # Applique des traitements sur l' | ||
| + | # des utilisateurs du tableau sauf l' | ||
| + | |||
| + | ForEach ($user in $users) { | ||
| + | If ($user.Name -eq " | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Les branchements ===== | ||
| + | |||
| + | ==== If ==== | ||
| + | |||
| + | <code powershell> | ||
| + | If ($freeSpace -le 5GB) { | ||
| + | | ||
| + | } ElseIf ($freeSpace -le 10GB) { | ||
| + | | ||
| + | } Else { | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Switch ==== | ||
| + | |||
| + | Pour un branchement conditionnel à choix multiples, il peut être plus lisible d' | ||
| + | |||
| + | **Switch** compare la valeur fournie a un ensemble de valeurs attendues. Un bloc d' | ||
| + | |||
| + | <code powershell> | ||
| + | Switch ($choice) { | ||
| + | 1 { Write-Host "You selected menu item 1" } | ||
| + | 2 { Write-Host "You selected menu item 2" } | ||
| + | 3 { Write-Host "You selected menu item 3" } | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Switch** possède les options **-Wilcard**, | ||
| + | |||
| + | <code powershell> | ||
| + | Switch -WildCard ($ip) { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | Seconde remarque si la variable a évaluer est un tableau, chaque élément sera évaluer. | ||
| ===== Références ===== | ===== Références ===== | ||
| * https:// | * https:// | ||