Switch-Case in PowerShell
Introductie van een Switch-Case in PowerShell
Schakel de functie in PowerShell is gebruikt voor het verwerken van meerdere If statements of in andere termen is de vervanging van meerdere voorwaarden If/Else If/Else. Om een enkele voorwaarde in Script of functie te controleren, kun je If/else statement gebruiken, maar als je meer IF statements wilt evalueren, gebruik dan Switch.
Switch is beter te vergelijken met meerdere If statements en gemakkelijk te implementeren en eenvoudig te gebruiken voor codering. Er zijn meerdere voorwaarden onder elke verklaring en wanneer een van hen voldoet dan wordt de actie uitgevoerd.
Start uw gratis cursus Data Science
Hadoop, Data Science, Statistics & andere
syntaxis:
Switch (<Value>)
{
<Condition1> {Action1}
<Condition2> {Action2}
}
volledige syntaxis:
Switch ( <value> ) {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}
Switch -file {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}
Parameters van Switch Case in PowerShell
- Regex: het wordt ook wel reguliere expressie genoemd. Voert de reguliere expressie controle uit tegen de waarde van de voorwaarde. Als u Regex gebruikt, worden jokertekens en Exacts genegeerd. Ook, als de match clausule geen tekenreeks is dan wordt deze parameter genegeerd.
- Wildcard: geeft aan dat de voorwaarde een wildcard-tekenreeks is. Als u Wildcard gebruikt, worden Regex en Exacts genegeerd. Ook, als de match clausule geen tekenreeks is dan wordt deze parameter genegeerd.
- Exact: voert de overeenkomst uit tegen de exacte tekenreeks. Als je Exact, Joker en Regex gebruikt worden genegeerd en als de match clausule geen tekenreeks is dan wordt deze parameter genegeerd.
- CaseSensitive: deze parameter controleert de voorwaarde die exact overeenkomt met de opgegeven waarde (hoofdlettergevoelig) als deze niet overeenkomt dan wordt deze parameter genegeerd. Het heeft ook een string waarde nodig.
- bestand: neemt het bestandspad als een invoerwaarde in plaats van een tekenreekswaarde. Als meerdere bestandsparameters worden doorgegeven, duurt het alleen de laatste. Elke regel van het bestand wordt gelezen en geëvalueerd tegen de voorwaarde en als de voorwaarde overeenkomt dan voert het die waarde uit of geeft een geschreven bericht weer.
stroomdiagram
Hoe werkt Switch in PowerShell?
zoals weergegeven in boven het diagram, wanneer een waarde (string, Integer, float of andere gegevenstypen), array, jokertekens, bestanden, enz. wordt doorgegeven dan begint het matching voorwaarden een voor een en wanneer conditie overeenkomt, het script voert dat blok. Voor meerdere overeenkomende waarden worden meerdere scripsblokken uitgevoerd en als er geen overeenkomende waarde is gevonden en als standaardvoorwaarde is opgegeven, wordt dat blok uitgevoerd, anders is er null-uitvoer.
voorbeelden van switch Case in PowerShell
laten we het gegeven voorbeeld bekijken:
Voorbeeld# 1
1. Eenvoudige switch functie Met string, integer waarde doorgegeven.
Code:
switch (3) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}
uitvoer:
Code:
switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}
Output:
Nu, wat als de parameter komt niet overeen met de expressie. Als voorbeeld hieronder gegeven, 5 komt niet overeen met een van de switch gevallen. In dit geval zal de uitvoer null zijn.
Code:
switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}
om het bovenstaande probleem op te lossen, moet default specificeren en standaard blok wordt uitgevoerd wanneer geen van de parameter overeenkomt.
Code:
switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
default{"No Match Found"}
}
Output:
Voorbeeld# 2
laten we het gegeven voorbeeld bekijken:
verschil tussen If / Else If /Else en switch. Uit het onderstaande voorbeeld kunt u begrijpen hoe het eenvoudig is om een script te schrijven met de Switch-functie.
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:
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 :
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:
verschil: 31.3154 milliseconden
dit verschil wordt groot wanneer u een groot script of functies in de switch schrijft.
1. Switch met Regex Parameter
als Regex wordt genoemd in switch, evalueert het de expressie met de opgegeven waarde en als een deel van de voorwaarde overeenkomt, voert het die operatie uit.
Bekijk het voorbeeld hieronder.
Code:
Switch ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}
uitvoer:
na het toevoegen van Regex.
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"}
}
uitvoer:
2. Schakelen met jokertekens Parameter
jokertekens werken vergelijkbaar met soortgelijke parameter.
Code:
$msg = "Error, WMI connection failed"
Switch -Wildcard ($msg) {
"Error*" {"WMI Error"}
"Warning*" {"WMI Warning"}
"Successful*" {"WMI Connection Successful"}
}
uitvoer:
3. Switch met exacte Parameter
exacte functie is standaard in Switch. Het maakt niet uit of je het gebruikt of niet. Maar als je twee parameters tegelijkertijd gebruikt dan heeft de laatste parameter voorrang.
Code:
Switch -Regex -Exact ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
Output:
Code:
Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
Output:
4. Switch met Bestandsparameter
u kunt een bestandspad direct naar de Switch als parameter opgeven. U kunt een bestand met een pad naar een bestand gebruiken in plaats van het een variabele expressie te geven.
Code:
Switch -Wildcard -File C:\temp\switchtest.txt {
"*Warning*"{Write-Warning $PSItem}
"*Error*"{Write-Error $PSItem}
}
uitvoer:
u kunt $PSItem of $_ gebruiken om met huidige Items te werken.
5. Switch met CaseSensitive parameter
wanneer je een Casesensitive parameter gebruikt in een switch, dan moet de conditie exact overeenkomen met elk karakter.
Code:
switch -CaseSensitive ("Hello") {
"HeLlo" {"This is different HeLlo"}
Default {"This is not Matching"}
}
uitvoer:
6. Passerende Array waarde om te schakelen functie
eenvoudige Array :
switch (10,12) {
9 { "Nine" }
10 { "Ten" }
11 {"Eleven"}
12 {"Twelve"}
Default {"None"}
}
Output:
passerende Array Object
code:
$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {"VM Delete Operation"}
"VM_Create" {"VM Create Operation"}
"VM_Shutdown" {"VM Shutdown Operation"}
}
Output:
7. Break condition
wanneer u de break condition opgeeft, breekt de operatie in die lus en kan ze niet verder worden uitgevoerd. Dit is vrij handig wanneer u niet wilt om verdere stappen te controleren wanneer de conditie voldoet en de uitvoeringstijd wordt sneller.
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
}
}
uitvoer:
Als u merkt dat er slechts één blok wordt uitgevoerd en dan verlaat het de schakelfunctie.
8. Continue Condition
Continue parameter wordt gebruikt om de specifieke iteratie over te slaan. Bijvoorbeeld, als er 3 items aan te passen dan zal het eerst uit te voeren en wanneer de conditie overeenkomt dan zal het overslaan van andere stappen en verplaatsen naar de volgende stap.
Code:
switch ('Hello') {
"hello" {'First Block Executes'
continue}
'HELLO' {'Second Block Executes'
continue }
'HeLLo' {'Third Block Exectues'
continue }
Default {'Nothing executed'}
}
uitvoer:
zoals u kunt zien is er slechts één argument doorgegeven (‘Hallo’), het voert het eerste blok alleen uit omdat de expressie overeenkomt en er geen ander argument meer over is om uit te voeren, zal het script eindigen.
- nog een gemengd voorbeeld van pauze en doorgaan met Switch.
Code:
switch ('Alpha','Beta','Delta') {
"Alpha" {'First Block Executes'
continue}
'Beta' {'Second Block Executes'
break }
'Delta' {'This will not Execute'}
}
uitvoer:
conclusie
al met al is Switch veel beter dan het implementeren van meerdere If-Voorwaarden en biedt het meer functionaliteit en een kortere uitvoeringstijd.
Aanbevolen artikelen
Dit is een leidraad geweest om van hoofdletter te wisselen in PowerShell. Hier bespreken we ook de syntaxis, parameters en voorbeelden van switch case in Powershell. U kunt ook een kijkje nemen op de volgende artikelen voor meer informatie-
- Wat is Shell Scripting?
- PowerShell-opdrachten
- PowerShell-Operators
- gebruik van Powershell
- Guide to Array in PowerShell met voorbeelden
- voorbeelden van Regex in PowerShell
- Complete Guide to Function in Shell Scripting
- leer de Echo in Shell Scripting
- voorbeelden van switch Case in Shell Scripting
- Python Switch Case / hoe te implementeren?
Leave a Reply