Outils pour utilisateurs

Outils du site


dev:powershell:structures_de_controle

Ceci est une ancienne révision du document !


:TODO:

PowerShell : Les structures de contrôle

ForEach

La boucle ForEach permet de traiter chaque éléments d'un tableau ou plus généralement d'un objet itérable :

ForEach ($user in $users) {
     Set-ADUser $user -Department "Marketing"
}
A partir de PowerShell 7 une cmdlet ForEach-Object permet de paralléliser les traitements accélérant significativement le temps d'exécution. La commande précédente peut alors s'écrire :
$users | ForEach-Object -Parallel { Set-ADUser $user -Department "Marketing" }

If

If ($freeSpace -le 5GB) {
   Write-Host "Free disk space is less than 5 GB"
} ElseIf ($freeSpace -le 10GB) {
   Write-Host "Free disk space is less than 10 GB"
} Else {
   Write-Host "Free disk space is more than 10 GB"
}

Switch

Pour un branchement conditionnel à choix multiples, il peut être plus lisible d'utiliser l'instruction Switch plutôt qu'une instruction If comprenant plusieurs sections ElseIf ou des If imbriqués.

Switch compare la valeur fournie a un ensemble de valeurs attendues. Un bloc d'instructions est associé et exécuté pour chaque alternative

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" }
   Default { Write-Host "You did not select a valid option" }
}

Switch possède les options -Wilcard, -Like et -Regex permettant d'utiliser des méta-caractères pour l'évaluation sur les chaînes de caractères. Cette fonctionnalité a un comportement spécifique car plusieurs correspondances sont alors possibles : dans ce cas, les blocs de script pour tous les critères correspondants sont exécutés.

Switch -WildCard ($ip) {
   "10.*" { Write-Host "This computer is on the internal network" }
   "10.1.*" { Write-Host "This computer is in London" }
   "10.2.*" { Write-Host "This computer is in Vancouver" }
   Default { Write-Host "This computer is not on the internal network" }
 }

Références

dev/powershell/structures_de_controle.1687422111.txt.gz · Dernière modification : 2023/06/22 08:21 de yoann