Examiner et utiliser la construction Switch dans des scripts Windows PowerShell
La construction switch est similaire à une construction If qui a plusieurs sections ElseIf . La construction switch évalue une variable ou un élément unique par rapport à plusieurs valeurs et a un bloc de script pour chaque valeur. Le bloc de script pour chaque valeur est exécuté si celle-ci correspond à la variable. Il existe également une section par défaut qui s’exécute uniquement s’il n’y a aucune correspondance.
La construction switch utilise la syntaxe suivante :
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" }
}
En plus des valeurs correspondantes, la construction switch peut également correspondre aux modèles. Vous pouvez utiliser le -Wildcard paramètre pour effectuer une correspondance de modèle à l’aide de la même syntaxe que l’opérateur -like . Vous pouvez également utiliser le -Regex paramètre pour correspondre à l’aide d’expressions régulières.
Lorsque vous utilisez la correspondance de modèle, plusieurs correspondances sont possibles. Lorsqu’il existe plusieurs correspondances, tous les blocs de script de modèle correspondants s’exécutent. Cela est différent d’une construction If dans laquelle un seul bloc de script s’exécute.
L’exemple suivant utilise la correspondance de motifs :
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" }
}
Pour les valeurs de $ip sur les réseaux de London (Londres) ou de Vancouver, deux messages s’affichent. Si $ip inclut une adresse IP sur le réseau 10.x.x.x, les messages indiquent que l’ordinateur est sur le réseau interne et se situe à London ou Vancouver. Si $ip n’est pas une adresse IP sur le réseau 10.x.x.x, le message indique que l’ordinateur n’est pas sur le réseau interne.
Si vous fournissez plusieurs valeurs dans un tableau à une construction Switch , chaque élément du tableau est évalué. Dans l’exemple précédent, si la variable $ip était un tableau avec deux adresses IP, les deux adresses IP seraient traitées et les actions appropriées s’exécutent pour chaque élément.