Articles

PowerShellのケースを切り替える

PowerShellのケースを切り替える

PowerShellのケースを切り替えるPowerShellのケースを切り替える

PowerShellのケースを切り替える
PowerShellのケースを切り替える

PowerShellのswitch関数は、複数のif文を処理するために使用され、他の用語では複数の条件if/else if/elseを置き換えます。 スクリプトまたは関数で単一の条件をチェックするには、If/else文を使用できますが、より多くのIF文を評価したい場合はSwitchを使用します。

Switchは、複数のIf文と比較して実装が簡単で、コーディングが簡単です。 各文の下には複数の条件があり、そのうちの1つが満たされると、アクションが実行されます。Div>

無料のデータサイエンスコースを開始

Hadoop、データサイエンス、統計&その他

構文: /p>

完全な構文:

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

または

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

PowerShellのスイッチケースのパラメータ

  • 正規表現:正規表現とも呼ばれます。 条件の値に対して正規表現チェックを実行します。 正規表現を使用する場合、WildCardとExactは無視されます。 また、match句が文字列でない場合、このパラメータは無視されます。
  • Wildcard:条件がワイルドカード文字列であることを示します。 ワイルドカードを使用する場合、RegexおよびExactは無視されます。 また、match句が文字列でない場合、このパラメータは無視されます。
  • Exact:正確な文字列との一致を実行します。 Exactを使用すると、ワイルドカードとRegexは無視され、match句が文字列でない場合、このパラメータは無視されます。
  • CaseSensitive:このパラメータは、渡された値と正確に一致する条件をチェックします(大文字と小文字を区別します)一致しない場合、このパラメータは無視されます。 また、文字列値も必要です。
  • File:ファイルパスを文字列値ではなく入力値として取ります。 複数のファイルパラメータが渡された場合は、最後のものだけを取ります。 ファイルの各行は条件に対して読み取られ、評価され、条件が一致する場合はその値が実行されるか、書き込まれたメッセージが表示されます。

フローチャート

フローチャート

フローチャート

PowerShellでスイッチはどのように機能しますか?

図の上に示すように、任意の値(文字列、整数、浮動小数点または他のデータ型)、配列、ワイルドカード、ファイルなどがあるときはいつでも。 渡された後、条件の一致を1つずつ開始し、条件が一致すると、スクリプトはそのブロックを実行します。 複数の一致する値の場合、複数のscripsブロックが実行され、一致する値が見つからず、default conditionが指定されている場合は、そのブロックが実行されます。

PowerShellでのスイッチケースの例

与えられた例を見てみましょう:

例#1

1。 文字列を持つ単純なスイッチ関数、渡された整数値。

コード:

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

出力:

powershell1

powershell1

コード:

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

出力:

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

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

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

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

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

powershell2

さて、パラメータが式と一致しない場合はどうなりますか。 以下に示す例として、5はいずれのスイッチケースとも一致しません。 この場合、出力はnullになります。コード

コード

コード:

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

上記の問題を克服するために、defaultは指定する必要があり、パラメータのいずれも一致しないときにdefaultブロックが実行されます。

コード:

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

出力:

powershell3

powershell3

例2

与えられた例:

if/else if/elseとswitchの違い。 以下の例から、Switch関数を使用してスクリプトを書くのが簡単であることがわかります。コード

コード

コード:

$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:p>

powershell21

powershell21

違い:31.3154ミリ秒

スイッチ内に大量のスクリプトや関数を書くと、この違いは膨大になります。

1. Regexパラメータを使用したSwitch

Regexがswitchに記載されている場合、渡された値で式を評価し、条件の一部が一致する場合、その操作を実行します。

以下の例を考えてみましょう。

コード:

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

出力:正規表現を追加した後、

powershell5

Powershell5

Powershell5

Powershell5

コード:

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

出力:

powershell6

powershell6

2。 Wildcardパラメータを持つスイッチ

WildcardはLikeパラメータと同様に動作します。

コード:

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

出力:

powershell7PNG

powershell7PNG

3。 正確なパラメータを持つスイッチ

正確な関数は、スイッチのデフォルトです。 あなたがそれを使用するかどうかは関係ありません。 ただし、2つのパラメータを同時に使用する場合は、最後のパラメータが優先されます。出力:

PowerShell9png

powershell9png

4. Switch with File Parameter

パラメータとしてスイッチへのファイルパスを直接指定することができます。 変数式を指定する代わりに、ファイルへのパスを指定してFileを使用できます。

コード:

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

出力:

powershellのswitchcase。 2PNG

powershellのスイッチケース。 2PNG

current PSItemまたは__を使用して、現在のアイテムを操作できます。

5. Switch with CaseSensitive parameter

switchでCasesensitive parameterを使用する場合、条件は各文字ごとに正確に一致する必要があります。

コード:

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

出力:

powershell10PNG

powershell10PNG

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

出力:

powershell12PNG

powershell12PNG

7。 Break condition

break conditionを指定すると、そのループ内で操作が中断され、それ以上の実行を続けることはできません。 これは、条件が満たされ、実行時間が速くなったときにそれ以上のステップをチェックしたくない場合に非常に便利です。

コード:

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

出力: p>

breakcondition

breakcondition

気づいたら、実行されたブロックは一つだけで、switch関数から終了します。

8. Continue Condition

Continueパラメータは、特定の反復をスキップするために使用されます。 たとえば、一致する項目が3つある場合は最初に実行され、条件が一致すると他のステップをスキップして次のステップに移動します。

コード:

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

出力:

continue condition

continue condition

あなたが見ることができるように渡された引数は一つだけです(’Hello’)、式が一致しており、実行する他の引数が残こんにちは、スク

  • ブレークのもう一つの混合例とスイッチで続行します。

コード:

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

出力:

powershell15PNG

powershell15PNG

結論

全体として、Switchは複数のIf条件を実装するよりもはるかに優れており、より多くの機能と実行時間

推奨記事

これは、PowerShellでケースを切り替えるためのガイドでした。 ここでは、Powershellの構文、パラメーター、およびスイッチケースの例についても説明します。 詳細については、次の記事を参照してください-

  1. シェルスクリプトとは何ですか?
  2. PowerShellコマンド
  3. PowerShell演算子
  4. Powershellの使用
  5. 例とPowerShellの配列へのガイド
  6. PowerShellの正規表現の例
  7. シェルスクリプトで機能するための完全なガイド
  8. シェルスクリプトでエコーを学ぶ
  9. シェルスクリプトでスイッチケースの例
  10. Pythonスイッチケース|どのように実装するには?
3つの株式