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:// |