Ceci est une ancienne révision du document !
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" }
$users | ForEach-Object -Parallel { Set-ADUser $user -Department "Marketing" }
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" }
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" } }