Articles

obudowa przełącznika w PowerShell

obudowa przełącznika w PowerShell

Przełącz case w PowerShell

wprowadzenie do przełącz case w PowerShell

funkcja przełącz w PowerShell jest używana do obsługi wielu instrukcji if lub w innych terminach jest to zastąpienie wielu warunków if/else if/else. Aby sprawdzić pojedynczy warunek w skrypcie lub funkcji, możesz użyć instrukcji If / else, ale jeśli chcesz obliczyć więcej instrukcji IF, użyj Switch.

Switch jest lepszy w porównaniu do wielu instrukcji If oraz łatwy do wdrożenia i prosty w użyciu do kodowania. W każdej instrukcji Jest wiele warunków, a gdy jeden z nich spełni, to akcja jest wykonywana.

rozpocznij bezpłatny kurs nauki o danych

Hadoop, Data Science, Statistics& inne

składnia:

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

pełna składnia:

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

lub

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

parametry obudowy przełącznika w PowerShell

  • regex: jest również nazywany wyrażeniem regularnym. Wykonuje sprawdzenie wyrażenia regularnego względem wartości warunku. Jeśli używasz wyrażenia regularnego, symbole wieloznaczne i Exacts są ignorowane. Ponadto, jeśli klauzula match nie jest łańcuchem znaków, to ten parametr jest ignorowany.
  • Wildcard: wskazuje, że warunek jest ciągiem znaków wieloznacznych. Jeśli używasz symbolu wieloznacznego, wyrażenia regularne i Exacts są ignorowane. Ponadto, jeśli klauzula match nie jest łańcuchem znaków, to ten parametr jest ignorowany.
  • Exact: wykonuje dopasowanie z dokładnym ciągiem znaków. Jeśli używasz Exact, Wildcard i Regex są ignorowane, a jeśli klauzula match nie jest ciągiem znaków, to ten parametr jest ignorowany.
  • CaseSensitive: ten parametr sprawdzi warunek, który jest dokładnie zgodny z przekazaną wartością (rozróżnia wielkość liter), jeśli nie jest zgodny, wtedy parametr ten jest ignorowany. Potrzebuje również wartości łańcuchowej.
  • plik: przyjmuje ścieżkę do pliku jako wartość wejściową, a nie jako wartość łańcuchową. Jeśli przekazywanych jest wiele parametrów pliku, zajmuje to tylko ostatni. Każdy wiersz pliku jest odczytywany i obliczany względem warunku i jeśli warunek jest zgodny, to wykonuje tę wartość lub wyświetla pisemną wiadomość.

SCHEMAT BLOKOWY

SCHEMAT BLOKOWY

SCHEMAT BLOKOWY

Jak działa przełącznik w PowerShell?

jak pokazano na powyższym diagramie, ilekroć dowolna wartość (string, Integer, float lub inne typy danych), tablica, symbole wieloznaczne, pliki, itd. jest przekazywana wtedy zaczyna dopasowywać warunki jeden po drugim, a gdy warunek pasuje, skrypt wykonuje ten blok. Dla wielu pasujących wartości, zostanie wykonany blok wielu skryptów i jeśli nie znaleziono pasującej wartości i jeśli podany jest warunek domyślny, to wykonuje ten blok, w przeciwnym razie nie ma wyjścia null.

przykłady przypadku przełącznika w PowerShell

zobaczmy podany przykład:

przykład# 1

1. Prosta funkcja przełączania z ciągiem znaków, wartość całkowita przekazana.

Kod:

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

Wyjście:

powershell 1

powershell 1

Kod:

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

Wyjście:

PowerShell 2

PowerShell 2

teraz, co zrobić, jeśli parametr nie pasuje do wyrażenia. Jako przykład podany poniżej, 5 nie pasuje do żadnego z przypadków przełączników. W tym przypadku wyjście będzie równe null.

Kod:

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

aby rozwiązać powyższy problem, default musi określić i domyślny blok zostanie wykonany, gdy żaden z parametrów nie pasuje.

Kod:

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

Wyjście:

powershell 3

powershell 3

przykład# 2

zobaczmy podany przykład:

różnica pomiędzy if /else if / else I switch. Z poniższego przykładu możesz zrozumieć, jak łatwo jest napisać skrypt za pomocą funkcji przełącznika.

Kod:

$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

różnica: 31.3154 milisekund

różnica ta staje się ogromna, gdy piszesz ogromny skrypt lub funkcje wewnątrz przełącznika.

1. Switch z parametrem Regex

Jeśli W switch jest mowa o wyrażeniu regularnym, to oblicza wyrażenie z przekazaną wartością i jeśli część warunku jest zgodna, wtedy wykonuje tę operację.

rozważ poniższy przykład.

Kod:

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

Wyjście:

powershell 5

powershell 5

Po dodaniu Regex.

Kod:

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

Wyjście:

powershell 6

powershell 6

2. Przełącznik z parametrem Wildcard

Wildcard działa podobnie do parametru Like.

Kod:

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

Wyjście:

powershell 7PNG

powershell 7PNG

3. Przełącznik z dokładnym parametrem

funkcja Exact jest domyślna w przełączniku. Nie ma znaczenia, czy go używasz, czy nie. Ale kiedy używasz dwóch parametrów w tym samym czasie, to ostatni parametr ma pierwszeństwo.

Kod:

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

Wyjście:

powershell 8PNG

powershell 8png

Kod:

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

wyjście:

PowerShell 9PNG

PowerShell 9PNG

4. Przełącznik z parametrem pliku

możesz podać ścieżkę pliku bezpośrednio do przełącznika jako parametr. Możesz użyć pliku ze ścieżką do pliku zamiast dawać mu wyrażenie zmiennej.

Kod:

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

Wyjście:

switchcase w powershell. 2PNG

switchcase w powershell. 2PNG

możesz użyć $PSItem lub $_ do pracy z bieżącymi elementami.

5. Przełącznik z parametrem CaseSensitive

gdy używasz parametru Casesensitive w przełączniku, warunek musi być dokładnie dopasowany przez każdy znak.

Kod:

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

Wyjście:

powershell 10png

powershell 10png

6. Przekazywanie wartości tablicy do funkcji przełączania

prosta tablica :

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

Wyjście:

przekazywanie tablicy

przekazywanie tablicy

przekazywanie kodu obiektu tablicy

:

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

Wyjście:

powershell 12png

powershell 12png

7. Warunek Break

gdy określisz warunek break, wtedy operacja zostanie przerwana w tej pętli i nie będzie mogła kontynuować dalszego wykonywania. Jest to bardzo pomocne, gdy nie chcesz sprawdzać dalszych kroków, gdy warunek spełnia, a czas wykonania staje się szybszy.

Kod:

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

Wyjście:

breakcondition

breakcondition

Jeśli zauważysz, że wykonywany jest tylko jeden blok, a następnie wychodzi z funkcji przełącznika.

8. Warunek Continue

parametr Continue jest używany do pominięcia konkretnej iteracji. Na przykład, jeśli są 3 elementy do dopasowania, to najpierw zostanie wykonane, a gdy warunek pasuje, pominie inne kroki i przejdzie do następnego kroku.

Kod:

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

Wyjście:

Kontynuuj warunek

Kontynuuj warunek

jak widać podano tylko jeden argument (’Hello’), wykonuje on pierwszy blok tylko dlatego, że wyrażenie jest dopasowane i nie ma innego argumentu do wykonania, skrypt się zakończy.

  • jeszcze jeden mieszany przykład break i dalej Switch.

Kod:

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

Wyjście:

powershell 15png

powershell 15png

podsumowanie

Podsumowując, Switch jest znacznie lepszy niż implementacja wielu warunków If I zapewnia większą funkcjonalność oraz redukcję czasu wykonania.

Polecane artykuły

To był przewodnik do przełączania przypadków w PowerShell. Tutaj również omówimy składnię, parametry i przykłady przypadków przełączników w Powershell. Możesz również zajrzeć do poniższych artykułów, aby dowiedzieć się więcej-

  1. czym jest Skryptowanie powłoki?
  2. polecenia PowerShell
  3. operatory PowerShell
  4. zastosowania Powershell
  5. Przewodnik po tablicy w PowerShell z przykładami
  6. przykłady Regex w PowerShell
  7. kompletny przewodnik po funkcjach w skryptach powłoki
  8. Naucz się echa w skryptach powłoki
  9. przykłady przypadków przełączników w skryptach powłoki
  10. Python Switch Case / jak zaimplementować?
3 akcje