Examiner et utiliser la construction Switch dans des scripts Windows PowerShell

Effectué

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" }
}

Outre les valeurs correspondantes, la construction switch peut également être utilisée pour faire correspondre des modèles. Vous pouvez utiliser le paramètre -wildcard pour effectuer des correspondances de modèles à l’aide de la même syntaxe que l’opérateur -like . Vous pouvez également utiliser le paramètre -regex pour effectuer la correspondance à l’aide d’expressions régulières.

Il est important de savoir que, lorsque vous utilisez une des critères spéciaux, plusieurs correspondances sont possibles. Quand il existe plusieurs correspondances, les blocs de script pour tous les critères correspondants sont exécutés. Cela diffère d’une construction If dans laquelle un seul bloc de script est exécuté.

L’exemple suivant utilise des critères spéciaux :

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. Les actions appropriées pour chaque élément du tableau seraient effectuées.