Увод у случај С вјештица у ПоверСхелл-у

Прекидачка функција у ПоверСхелл-у користи се за обраду вишеструких Иф изјава или другим речима, замена је вишеструких услова Иф / Елсе Иф / Елсе. Да бисте проверили један услов у Скрипту или Функцији, можете користити иф / елсе изјаву, али ако желите да процијените више ИФ изјава, тада користите Свитцх.

Пребацивање је боље упоређивати са више иф изјава и лако је имплементирати, а за кодирање је једноставно коришћење. Постоји неколико услова под сваком изјавом и када један од њих задовољава, тада се радња изводи.

Синтакса:

Switch ()
(
(Action1)
(Action2)
)

Комплетна синтакса:

Switch (-regex | -wildcard | -exact ) ( -casesensitive ) ( ) (
"String" | Number | Variable | ( expression ) ( statementlist )
default ( statementlist )
)

ИЛИ

Switch (-regex | -wildcard | -exact ) ( -casesensitive ) -file (filename)(
"String" | Number | Variable | ( expression ) ( statementlist )
default ( statementlist )
)

Параметри кућишта прекидача у ПоверСхелл-у

  • Регек : Назива се и Регулар Екпрессион. Извршава Проверу регуларних израза у односу на вредност стања. Ако користите Регек, ВилдЦард и Екацтс се занемарују. Такође, ако клаузула подударања није низ, тада се овај параметар занемарује.
  • Надимак : Означава да је услов врста с малим знаковима. Ако користите Вилдцард, Регек и Екацтс се игноришу. Такође, ако клаузула подударања није низ, тада се овај параметар занемарује.
  • Тачно : Изводи утакмицу против тачног низа. Ако користите Екацт, Вилдцард и Регек се занемарују и ако клаузула подударања није низ, тада се овај параметар занемарује.
  • ЦасеСенситиве: Овај ће параметар провјерити стање које се тачно подудара с пренесеном вриједности (осетљива на велика и мала слова) ако се не подудара, а тај се параметар занемарује. Такође му треба и вредност низа.
  • Датотека : путању датотеке узима као улазну вриједност, а не као вриједност низа. Ако се пренесе више параметара датотеке, потребна је само посљедња. Сваки се ред датотеке чита и процјењује према стању и ако се увјет подудара онда извршава ту вриједност или приказује писану поруку.

Дијаграм тока

Како прекидач ради у ПоверСхеллу?

Као што је приказано на горњем дијаграму, кад год се пренесе било која вредност (низ, цели број, пловак или други типови података), низ, дежурне ознаке, датотеке, итд., Онда започиње подударање услова, један по један, а када се услов подудара, скрипта извршава тај блок . За вишеструке вредности подударања извршиће се више блокова скрипти, а ако није пронађена ниједна одговарајућа вредност и ако је специфицирано подразумевано стање, онда тај блок извршава, а у противном постоји нулту излазност.

Примери преклопног кућишта у ПоверСхелл-у

Погледајмо дати пример:

Пример # 1

1. Једноставна функција пребацивања с низом, прелазећи цијелу вриједност.

Шифра:

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

Излаз: Три

Шифра:

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

Излаз: Извршени подаци

Шта ако параметар не одговара изразу. Као пример дат у даљем тексту, 5 се не подудара ни са једним случајем Свитцх. У овом случају, излаз ће бити нула.

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

Да би се превазишао горе наведени проблем, подразумевано треба да одреди и изврши подразумевани блок када ниједан од параметара не одговара.

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

Излаз: Није пронађено подударање

Пример бр. 2

Погледајмо дати пример:

Разлика између ако / елсе ако / елсе и Свитцх. Из следећег примера можете разумети како је лако написати скрипту са функцијом Свитцх.

$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")
)

Излаз: То је 3 О'Цлоцк

Време извршења за обе методе.

$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")
)

Укупне милисекунде: 39.1416

$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")
)
)

Укупне милисекунде: 25.6802

Разлика: 13.4614 милисекунди

Ова разлика постаје огромна када у преклопник напишете масиван скрипт или функције.

1. Пребаците се са параметром Регек

Ако се Регек спомиње у прекидачу, он процењује израз са пренесеном вредностом и ако се део услова подудара, тада он извршава ту операцију.

Размотрите доњи пример.

Шифра:

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

Излаз: Ништа се не спомиње

Након додавања Регек-а.

Шифра:

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

Излаз : Донкеи је споменут

Магарац се поново спомиње

2. Пребаците се са параметром Вилдцард

Вилдцард делује слично као параметар Лике.

Шифра:

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

Излаз: ВМИ Грешка

3. Пребаците се са тачним параметром

Тачна функција је подразумевана у Свитцх-у. Није битно да ли га користите или не. Али ако користите два параметра истовремено, последњи параметар има предност.

Шифра:

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

Излаз: Нема света

Шифра:

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

Излаз: Хелло Ворлд

4. Пребаците се са параметром датотеке

Као параметар можете да наведете путању датотеке директно до Прекидача. Датотеку можете користити са стазом до датотеке, уместо да јој дајете променљив израз.

Шифра:

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

Излаз:

Можете користити $ ПСИтем или $ _ за рад са текућим ставкама.

5. Пребаците се са параметром ЦасеСенситиве

Када користите параметар Цасесенситиве у прекидачу, услов се мора тачно подударати са сваким знаком.

Шифра:

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

Излаз: То се не подудара

6. Преношење вредности Арраи за промену функције

Симпле Арраи:

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

Излаз:

Десет

Дванаест

Пролажење Арраи објекта

Шифра:

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

Излаз:

Операција брисања ВМ-а

ВМ Цреате Оператион

7. стање прекида

Када одредите услов прекида, тада се Операција прекида у тој петљи и не може наставити са даљим извршавањем. Ово је прилично корисно када не желите да проверите даље кораке када се услов задовољи и време извршења постаје брже.

Шифра:

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

Излаз:

Операција брисања ВМ-а

Ако приметите, извршен је само један блок и он тада излази из функције пребацивања.

8. Наставите стање

Параметар Цонтинуе користи се за прескакање одређене итерације. На пример, ако постоје 3 ставке које се подударају, прво ће се извршити, а када се услови подударају, прескочит ће остале кораке и прећи на следећи корак.

Шифра:

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

Излаз: Први блок се извршава

Као што можете видети да постоји само један аргумент ('Хелло'), први блок извршава само зато што се израз подудара и нема другог аргумента који се извршава, скрипта ће се завршити.

  • Још један мешовити пример прекида и наставка са Свитцх-ом.

Шифра:

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

Излаз:

Први блок се извршава

Други блок се извршава

Закључак

Све у свему, Свитцх је далеко бољи од примене више Иф услова и пружа више функционалности и скраћења времена извршења.

Препоручени чланци

Ово је водич за Свитцх Цасе у ПоверСхелл-у. Овде такође расправљамо о синтакси, параметрима и примерима случаја прекидача у Поверсхелл-у. Можда ћете такође погледати следеће чланке да бисте сазнали више -

  1. Шта је Схелл Сцриптинг?
  2. ПоверСхелл наредбе
  3. Оператори ПоверСхелл-а
  4. Усес Оф Поверсхелл
  5. Водич за низ у ПоверСхелл-у са примерима

Категорија: