Articles

Boîtier de commutation dans PowerShell

Boîtier de commutation dans PowerShell

Boîtier de commutation dans PowerShell

Introduction au Boîtier de commutation dans PowerShell

La fonction de commutation dans PowerShell est utilisée pour gérer plusieurs instructions If ou en d’autres termes, elle remplace plusieurs conditions If /Else If /Else. Pour vérifier une seule condition dans un script ou une fonction, vous pouvez utiliser l’instruction If / else, mais si vous souhaitez évaluer plus d’instructions IF, utilisez Switch.

Le commutateur est mieux comparé à plusieurs instructions If et facile à implémenter et à utiliser pour le codage. Il y a plusieurs conditions sous chaque instruction et lorsque l’une d’elles se satisfait, l’action est effectuée.

Commencez Votre Cours Gratuit de Science des Données

Hadoop, Science des Données, Statistiques &autres

Syntaxe:

Switch (<Value>)
{
<Condition1> {Action1}
<Condition2> {Action2}
}

Syntaxe complète:

Switch ( <value> ) {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}

OU

Switch -file {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}

Paramètres du boîtier du commutateur dans PowerShell

  • Regex : On l’appelle aussi Expression régulière. Effectue la vérification de l’expression régulière par rapport à la valeur de la condition. Si vous utilisez Regex, les caractères génériques et les attributs sont ignorés. De plus, si la clause match n’est pas une chaîne, ce paramètre est ignoré.
  • Caractère générique : Indique que la condition est une chaîne générique. Si vous utilisez un caractère générique, les expressions régulières et les obligations sont ignorées. De plus, si la clause match n’est pas une chaîne, ce paramètre est ignoré.
  • Exact: Effectue la correspondance avec la chaîne exacte. Si vous utilisez Exact, les caractères génériques et les expressions régulières sont ignorés et si la clause match n’est pas une chaîne, ce paramètre est ignoré.
  • Sensible à la casse : Ce paramètre vérifie la condition qui correspond exactement à la valeur transmise (sensible à la casse) si elle ne correspond pas, ce paramètre est ignoré. Il a également besoin d’une valeur de chaîne.
  • File: Prend le chemin du fichier comme valeur d’entrée plutôt qu’une valeur de chaîne. Si plusieurs paramètres de fichier sont passés, il ne prend que le dernier. Chaque ligne du fichier est lue et évaluée par rapport à la condition et si la condition correspond, elle exécute cette valeur ou affiche un message écrit.

Organigramme

Organigramme

Organigramme

Comment fonctionne Switch dans PowerShell?

Comme indiqué au-dessus du diagramme, chaque fois qu’une valeur (chaîne, Entier, type flottant ou autre type de données), un tableau, des caractères génériques, des fichiers, etc. est passé puis il commence à faire correspondre les conditions une par une et lorsque la condition correspond, le script exécute ce bloc. Pour plusieurs valeurs correspondantes, plusieurs blocs de scripts seront exécutés et si aucune valeur correspondante n’est trouvée et si la condition par défaut est spécifiée, il exécute ce bloc sinon il y a une sortie nulle.

Exemples de boîtier de commutation dans PowerShell

Voyons l’exemple donné:

Exemple #1

1. Fonction de commutation simple avec chaîne, valeur entière passée.

Code:

switch (3) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}

Sortie:

powershell 1

powershell 1

Code:

switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}

Sortie:

switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}

powershell 2powershell 2

powershell 2

Maintenant, que faire si le paramètre ne correspond pas à l’expression. À titre d’exemple donné ci-dessous, 5 ne correspond à aucun des cas de commutation. Dans ce cas, la sortie sera nulle.

Code:

switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}

Pour résoudre le problème ci-dessus, default doit spécifier et default block s’exécute lorsqu’aucun des paramètres ne correspond.

Code:

switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
default{"No Match Found"}
}

Sortie:

powershell 3

powershell 3

Exemple #2

Voyons l’exemple donné:

Différence entre if/else if/else et Switch. Dans l’exemple ci-dessous, vous pouvez comprendre comment il est facile d’écrire un script avec la fonction Switch.

Code:

$time = 3
if($time -eq 1){"It's 1 O'Clock"}
elseif ($time -eq 2) {"It's 2 O'Clock"}
elseif ($time -eq 3) {"It's 3 O'Clock"}
else {"No Match Found"}

$time = 3
switch ($time) {
1 {"It's 1 O'Clock"}
2 {"It's 2 O'Clock"}
3 {"It's 3 O'Clock"}
default{"No Match found"}
}

Output:

powershell 4

powershell 4

Execution time for both the methods.

Code:

$time = 3
Measure-Command {
if($time -eq 1){"It's 1 O'Clock"}
elseif ($time -eq 2) {"It's 2 O'Clock"}
elseif ($time -eq 3) {"It's 3 O'Clock"}
else {"No Match Found"}
}

TotalMilliseconds :

TotalMilliseconds

TotalMilliseconds

Code:

$time = 3
Measure-Command {
switch ($time) {
1 {"It's 1 O'Clock"}
2 {"It's 2 O'Clock"}
3 {"It's 3 O'Clock"}
default{"No Match found"}
}
}

TotalMilliseconds:

powershell21

powershell21

Différence: 31,3154 millisecondes

Cette différence devient importante lorsque vous écrivez un script massif ou des fonctions à l’intérieur du commutateur.

1. Commutateur avec le paramètre Regex

Si Regex est mentionné dans le commutateur, il évalue l’expression avec la valeur transmise et si une partie de la condition correspond, il exécute cette opération.

Considérons l’exemple ci-dessous.

Code:

Switch ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}

Sortie:

powershell 5

powershell 5

Après avoir ajouté une expression régulière.

Code:

Switch -Regex ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}

Sortie:

powershell 6

powershell 6

2. Commutateur avec le paramètre générique

Le caractère générique fonctionne de la même manière que le paramètre Like.

Code:

$msg = "Error, WMI connection failed"
Switch -Wildcard ($msg) {
"Error*" {"WMI Error"}
"Warning*" {"WMI Warning"}
"Successful*" {"WMI Connection Successful"}
}

Sortie:

powershell 7PNG

powershell 7PNG

3. Commutateur avec le paramètre exact

La fonction exacte est par défaut dans le commutateur. Peu importe si vous l’utilisez ou non. Mais lorsque vous utilisez deux paramètres en même temps, le dernier paramètre a priorité.

Code:

Switch -Regex -Exact ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}

Sortie:

powershell 8PNG

powershell 8PNG

Code :

Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}

Sortie:

powershell 9PNG

powershell 9PNG

4. Commutateur avec le paramètre de fichier

Vous pouvez fournir un chemin de fichier directement au commutateur en tant que paramètre. Vous pouvez utiliser un fichier avec un chemin d’accès à un fichier au lieu de lui donner une expression de variable.

Code:

Switch -Wildcard -File C:\temp\switchtest.txt {
"*Warning*"{Write-Warning $PSItem}
"*Error*"{Write-Error $PSItem}
}

Sortie:

boîtier de commutation dans powershell. 2PNG

boîtier de commutation dans powershell. 2PNG

Vous pouvez utiliserPSPSItem ou__ pour travailler avec les éléments actuels.

5. Commutateur avec un paramètre sensible à la casse

Lorsque vous utilisez un paramètre sensible à la casse dans un commutateur, la condition doit correspondre exactement à chaque caractère.

Code:

switch -CaseSensitive ("Hello") {
"HeLlo" {"This is different HeLlo"}
Default {"This is not Matching"}
}

Sortie:

powershell 10PNG

powershell 10PNG

6. Passage de la valeur du tableau à la fonction de commutation

Tableau simple:

switch (10,12) {
9 { "Nine" }
10 { "Ten" }
11 {"Eleven"}
12 {"Twelve"}
Default {"None"}
}

Sortie:

passage du tableau

passage du tableau

Passage du tableau Objet tableau

Code:

$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {"VM Delete Operation"}
"VM_Create" {"VM Create Operation"}
"VM_Shutdown" {"VM Shutdown Operation"}
}

Sortie:

powershell 12PNG

powershell 12PNG

7. Condition de rupture

Lorsque vous spécifiez une condition de rupture, l’opération se brise dans cette boucle et ne peut pas continuer l’exécution. Cela est très utile lorsque vous ne souhaitez pas vérifier d’autres étapes lorsque la condition est satisfaite et que le temps d’exécution devient plus rapide.

Code:

$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {
"VM Delete Operation"
break }
"VM_Create" {
"VM Create Operation"
break}
"VM_Shutdown" {
"VM Shutdown Operation"
break
}
}

Sortie:

breakcondition

breakcondition

Si vous remarquez, il n’y a qu’un seul bloc exécuté et il sort de la fonction de commutation.

8. Le paramètre Continue Condition

Continue est utilisé pour ignorer l’itération particulière. Par exemple, s’il y a 3 éléments à faire correspondre, il s’exécutera en premier et lorsque la condition correspond, il ignorera les autres étapes et passera à l’étape suivante.

Code:

switch ('Hello') {
"hello" {'First Block Executes'
continue}
'HELLO' {'Second Block Executes'
continue }
'HeLLo' {'Third Block Exectues'
continue }
Default {'Nothing executed'}
}

Sortie:

condition continue

condition continue

Comme vous pouvez le voir, il n’y a qu’un seul argument passé (‘Hello’), il exécute le premier bloc uniquement parce que l’expression correspond et qu’il n’y a plus d’autre argument à exécuter, le script se terminera.

  • Un autre exemple mixte de pause et de continuer avec Switch.

Code:

switch ('Alpha','Beta','Delta') {
"Alpha" {'First Block Executes'
continue}
'Beta' {'Second Block Executes'
break }
'Delta' {'This will not Execute'}
}

Sortie:

powershell 15PNG

powershell 15PNG

Conclusion

Dans l’ensemble, Switch est bien meilleur que l’implémentation de conditions If multiples et offre plus de fonctionnalités et une réduction du temps d’exécution.

Articles recommandés

Ceci a été un guide pour Changer de boîtier dans PowerShell. Ici, nous discutons également de la syntaxe, des paramètres et des exemples de cas de commutation dans Powershell. Vous pouvez également consulter les articles suivants pour en savoir plus –

  1. Qu’est-ce que le script Shell ?
  2. Commandes PowerShell
  3. Opérateurs PowerShell
  4. Utilisations de Powershell
  5. Guide du Tableau dans PowerShell avec des Exemples
  6. Exemples d’Expressions Régulières dans PowerShell
  7. Guide Complet de la Fonction dans les Scripts Shell
  8. Apprendre l’Écho dans les Scripts Shell
  9. Exemples de Cas de Commutation dans les Scripts Shell
  10. Cas de Commutation Python | Comment Implémenter?
3 Actions