Articles

Kapcsolót az Esetben a PowerShell

Kapcsolót az Esetben a PowerShell

Kapcsolót az Esetben a PowerShell

Bevezetés Kapcsoló Esetben a PowerShell

Kapcsoló funkció a PowerShell használt kezelni több, Ha nyilatkozatok vagy egyéb szempontból csere több feltételek if/else if/else. Ha egyetlen feltételt szeretne ellenőrizni a szkriptben vagy a funkcióban, használhatja az If/else nyilatkozatot, de ha többet szeretne értékelni, ha a kijelentéseket használja, akkor használja a kapcsolót.

Switch jobb összehasonlítani több If kimutatások és könnyen megvalósítható és egyszerű használata kódolás. Az egyes kijelentések több feltételt tartalmaznak, és ha az egyik megfelel, akkor a műveletet végrehajtják.

ingyenes adattudományi tanfolyam indítása

Hadoop, Data Science, Statistics & mások

/ div >

szintaxis:

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

teljes szintaxis:

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

vagy

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

a PowerShellben lévő Kapcsolótok paraméterei

  • regex: reguláris kifejezésnek is nevezik. Elvégzi a reguláris kifejezés ellenőrzését az állapot értékével szemben. Ha használja Regex, helyettesítő és exact figyelmen kívül hagyja. Továbbá, ha a match záradék nem karakterlánc, akkor ezt a paramétert figyelmen kívül hagyja.
  • helyettesítő: azt jelzi, hogy a feltétel egy helyettesítő karakterlánc. Ha a helyettesítő, Regex, és exact figyelmen kívül hagyja. Továbbá, ha a match záradék nem karakterlánc, akkor ezt a paramétert figyelmen kívül hagyja.
  • pontos: elvégzi a mérkőzést a pontos karakterlánc ellen. Ha az Exact, a Wildcard és a Regex parancsokat figyelmen kívül hagyja, és ha a match záradék nem karakterlánc, akkor ezt a paramétert figyelmen kívül hagyja.
  • cases sensitive: ez a paraméter ellenőrzi azt a feltételt, amely pontosan megfelel az átadott értéknek (esetérzékeny), ha nem egyezik meg, akkor ezt a paramétert figyelmen kívül hagyja. Szüksége van egy karakterlánc értékre is.
  • File: a fájl elérési útját bemeneti értékként veszi fel, nem pedig karakterláncként. Ha több fájlparaméter kerül átadásra, akkor csak az utolsó. A fájl minden sorát a feltétel alapján olvassa el és értékeli, és ha a feltétel megegyezik, akkor végrehajtja ezt az értéket, vagy írásbeli üzenetet jelenít meg.

folyamatábra

folyamatábra

folyamatábra

hogyan működik a Switch PowerShellben?

amint az a diagram felett látható, amikor bármilyen érték (karakterlánc, egész szám, úszó vagy más adattípus), tömb, helyettesítő karakterek, fájlok stb. elhalad, majd elkezdi a megfelelő feltételeket egyenként, és amikor a feltétel megegyezik, a szkript végrehajtja azt a blokkot. Több megfelelő érték esetén több szkriptblokk kerül végrehajtásra, ha nincs megfelelő érték, és ha az alapértelmezett feltétel meg van adva, akkor végrehajtja azt a blokkot, különben nincs null kimenet.

példák Kapcsolótok PowerShellben

nézzük meg az adott példát:

példa# 1

1. Egyszerű kapcsoló funkció string, egész érték telt el.

Kód:

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

kimenet:

powershell 1

powershell 1

Kód:

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

kimenet:

PowerShell 2

PowerShell 2

most mi van, ha a paraméter nem egyezik a kifejezéssel. Az alábbi példában az 5 nem egyezik meg a kapcsolási esetek egyikével sem. Ebben az esetben a kimenet null lesz.

Kód:

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

a fenti probléma megoldásához az alapértelmezettnek meg kell adnia, az alapértelmezett blokkot pedig akkor kell végrehajtania, ha egyik paraméter sem egyezik.

Kód:

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

kimenet:

powershell 3

powershell 3

példa# 2

nézzük meg az adott példát:

különbség If /Else If / Else és switch között. Az alábbi példából megértheti, hogyan könnyű írni egy szkriptet a kapcsoló funkcióval.

Kód:

$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

különbség: 31.3154 milliszekundum

Ez a különbség hatalmas lesz, ha masszív szkriptet vagy funkciókat ír a kapcsolón belül.

1. Váltás a Regex paraméterrel

Ha a Regex szerepel a switch-ben, kiértékeli a kifejezést az átadott értékkel, és ha a feltétel egy része megegyezik, akkor végrehajtja ezt a műveletet.

vegye figyelembe az alábbi példát.

Kód:

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

kimenet:

powershell 5

powershell 5

hozzáadása után Regex.

Kód:

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

kimenet:

powershell 6

powershell 6

2. Váltás helyettesítő paraméterrel

a helyettesítő karakter hasonló a hasonló paraméterhez.

Kód:

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

kimenet:

powershell 7PNG

powershell 7png

3. Kapcsoló pontos paraméter

pontos funkció alapértelmezett kapcsoló. Nem számít, hogy használja-e vagy sem. De ha egyszerre két paramétert használ, akkor az utolsó paraméter elsőbbséget élvez.

Kód:

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

kimenet:

powershell 8PNG

powershell 8png

Kód:

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

kimenet:

PowerShell 9png

4. Váltás a

Fájlparaméterrel megadhat egy fájl elérési útját közvetlenül a kapcsolóhoz paraméterként. Használhatja fájl elérési útját egy fájlt, ahelyett, hogy ez egy változó kifejezést.

Kód:

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

kimenet:

kapcsolóház PowerShellben. 2PNG

kapcsolóház PowerShellben. 2PNG

használhatja $PSItem vagy $ _ dolgozni az aktuális elemeket.

5. Kapcsolja be a

Esetérzékeny paramétert egy kapcsolóban, akkor az állapotnak pontosan meg kell egyeznie az egyes karakterekkel.

Kód:

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

kimenet:

powershell 10png

powershell 10png

6. Átadó tömb érték kapcsoló funkció

egyszerű tömb :

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

kimenet:

áthaladó tömb

áthaladó tömb

átadó tömb objektum

kód:

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

kimenet:

powershell 12png

powershell 12png

7. Törési állapot

amikor megadja a törési állapotot, akkor a művelet megszakad a hurokban, és nem tudja folytatni a további végrehajtást. Ez nagyon hasznos, ha nem szeretné, hogy ellenőrizze a további lépéseket, ha a feltétel megfelel a végrehajtási idő gyorsabb lesz.

Kód:

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

kimenet:

breakcondition

breakcondition

ha észreveszi, csak egy blokk van végrehajtva, majd kilép a switch funkcióból.

8. Continue Condition

A Continue paraméter az adott iteráció kihagyására szolgál. Például, ha van 3 elem, amely megfelel, akkor először végrehajtja, majd amikor a feltétel megegyezik, akkor kihagyja a többi lépést,majd a következő lépésre lép.

Kód:

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

kimenet: továbbra is feltétel

továbbra is feltétel

Mint látható, csak egy érv lejárt (“Hello”), akkor végrehajtja az első blokk csak azért, mert a kifejezés megfelelő, de nincs más érv, balra, hogy végre, a könyv végén.

  • még egy vegyes példa a törésre, majd folytassa a kapcsolóval.

Kód:

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

kimenet:

powershell 15png

powershell 15png

következtetés

összességében a switch sokkal jobb, mint a többszörös If feltételek végrehajtása, és több funkcionalitást és a végrehajtási idő csökkentését biztosítja.

ajánlott cikkek

Ez egy útmutató a PowerShellben lévő kapcsolási esethez. Itt is megvitatják a szintaxis, paraméterek, példák kapcsoló esetében Powershell. A következő cikkeket is megnézheti, ha többet szeretne megtudni-

  1. mi a Shell Scripting?
  2. PowerShell Parancsok
  3. PowerShell Szereplők
  4. Használja A Powershell
  5. Útmutató Tömb a PowerShell a Példák
  6. Példa a Regex PowerShell
  7. Teljes Útmutató Funkció a Shell Scripting
  8. Tanulni a Visszhang a Shell Scripting
  9. Példa a Kapcsolót az Esetben a Shell Scripting
  10. Python Váltás Esetén|, Hogyan valósítja meg?
3 részvény