スイッチの概要
概要
スイッチを使用して複数の If ステートメントを処理する方法について説明します。
詳細説明
スクリプトまたは関数で条件を確認するには、ステートメントを使用し If
ます。 ステートメントでは If
、変数の値やオブジェクトのプロパティなど、さまざまな種類の条件を確認できます。
複数の条件を確認するには、ステートメントを使用し Switch
ます。 ステートメントは、 Switch
一連の If ステートメントに相当しますが、より簡単です。 ステートメントでは、 Switch
各条件とオプションのアクションが一覧表示されます。 条件がを取得すると、アクションが実行されます。
ステートメントでは Switch
、自動変数も使用され $switch
ます。 詳細については、「 about_Automatic_Variables」を参照してください。
基本 Switch
ステートメントの形式は次のとおりです。
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
たとえば、次のステートメントでは、 Switch
テスト値3を各条件に比較しています。 テスト値が条件に一致した場合、アクションが実行されます。
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
この簡単な例では、値3が一致する場合でも、値はリストの各条件と比較されます。 次の Switch
ステートメントには、値が3の2つの条件があります。 既定では、すべての条件がテストされることを示しています。
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Three again.
一致後にを比較しないようにに指示するには、 Switch
ステートメントを使用し Break
ます。 ステートメントは、 Break
ステートメントを終了し Switch
ます。
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."; Break}
4 {"It is four."}
3 {"Three again."}
}
It is three.
テスト値が配列などのコレクションである場合、コレクション内の各項目は、出現する順序で評価されます。 次の例では、4と2が評価されます。
switch (4, 2)
{
1 {"It is one." }
2 {"It is two." }
3 {"It is three." }
4 {"It is four." }
3 {"Three again."}
}
It is four.
It is two.
次の例に示すように、すべてのステートメントは、 Break
各値ではなく、コレクションに適用されます。 ステートメントは、 Switch
Break
値4の条件でステートメントによって終了されます。
switch (4, 2)
{
1 {"It is one."; Break}
2 {"It is two." ; Break }
3 {"It is three." ; Break }
4 {"It is four." ; Break }
3 {"Three again."}
}
It is four.
構文
ステートメントの完全な Switch
構文は次のとおりです。
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
または
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
パラメーターを使用しない場合、では、 Switch
値に対して大文字と小文字を区別しない完全一致が実行されます。 値がコレクションの場合は、各要素が出現する順序で評価されます。
ステートメントには、 Switch
少なくとも1つの condition ステートメントを含める必要があります。
Default
値がどの条件にも一致しない場合、句がトリガーされます。 これは、 Else
ステートメントの句に相当 If
します。 Default
各ステートメントで使用できる句は1つだけです Switch
。
Switch
には次のパラメーターがあります。
パラメーター | 説明 |
---|---|
***** | 条件がワイルドカード文字列であることを示します。 |
Match 句が文字列でない場合、パラメーターはになります。 | |
無効. | |
[Exact] | Match 句 (文字列の場合) を指定する必要があります。 |
正確に一致します。 Match 句が文字列でない場合、このパラメーター | |
は無視されます。 | |
CaseSensitive | 大文字と小文字を区別する一致を実行します。 Match 句が |
文字列。このパラメーターは無視されます。 | |
[最近使ったファイル] | 値ステートメントではなく、ファイルからの入力を受け取ります。 状況 |
複数のファイルパラメーターが含まれています。最後のパラメーターのみです。 | |
あります。 ファイルの各行が読み取りおよび評価されます。 | |
Switch 諸表. |
|
Regex | 値の正規表現との一致を |
フィルター. 取得するオブジェクトで | |
match 句が文字列ではありません。このパラメーターは無視されます。 |
注意
Regexやワイルドカードなどの競合する値を指定すると、指定された最後のパラメーターが優先され、競合するすべてのパラメーターは無視されます。 パラメーターの複数のインスタンスを使用することもできます。 ただし、最後に使用されたパラメーターのみが有効です。
この例では、一致するケースがないため、出力はありません。
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
句を追加することで Default
、他の条件が成功しなかった場合にアクションを実行できます。
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
Default {
"No matches"
}
}
No matches
"14" という語を大文字と小文字に一致させるに -Wildcard
は、パラメーターまたはパラメーターを使用する必要があり -Regex
ます。
PS> switch -Wildcard ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
That's too many.
次の例では、パラメーターを使用し -Regex
ます。
$target = 'user@contoso.com'
switch -Regex ($target)
{
'ftp\://.*' { "$_ is an ftp address"; Break }
'\w+@\w+\.com|edu|org' { "$_ is an email address"; Break }
'http[s]?\://.*' { "$_ is a web address"; Break }
}
user@contoso.com is an email address
ステートメントの条件には、 Switch
次のいずれかを指定できます。
- 値が入力値と比較される式。
$true
条件が満たされた場合にを返すスクリプトブロック。 スクリプトブロックは、自動変数で比較する現在のオブジェクトを受け取り、$_
それ自体のスコープで評価されます。
各条件のアクションは、他の条件のアクションから独立しています。
次の例では、ステートメントの条件としてスクリプトブロックを使用する方法を示し Switch
ます。
switch ("Test")
{
{$_ -is [String]} {
"Found a string"
}
"Test" {
"This executes as well"
}
}
Found a string
This executes as well
値が複数の条件に一致する場合は、各条件のアクションが実行されます。 この動作を変更するに Break
は、キーワードまたはキーワードを使用し Continue
ます。
Break
キーワードは処理を停止し、ステートメントを終了し Switch
ます。
キーワードは、 Continue
現在の値の処理を停止しますが、後続の値の処理は続行されます。
次の例では、数値の配列を処理し、奇数または偶数であるかどうかを表示します。 負の数値は、キーワードを使用してスキップされ Continue
ます。 非数が検出された場合、実行はキーワードを使用して終了し Break
ます。
switch (1,4,-1,3,"Hello",2,1)
{
{$_ -lt 0} { Continue }
{$_ -isnot [Int32]} { Break }
{$_ % 2} {
"$_ is Odd"
}
{-not ($_ % 2)} {
"$_ is Even"
}
}
1 is Odd
4 is Even
3 is Odd