간단한 설명
스위치를 사용하여 여러 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에 대한 두 가지 조건이 있습니다. 기본적으로 모든 조건이 테스트됨을 보여 줍니다.
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 문은 값 4의 조건으로 Break 문에 의해 종료됩니다.
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 문에는 하나 이상의 조건문이 포함되어야 합니다.
값이 조건과 일치하지 않으면 Default 절이 트리거됩니다.
Else 문의 If 절과 동일합니다. 각 Default 문에는 하나의 Switch 절만 허용됩니다.
Switch 매개 변수는 다음과 같습니다.
| 매개 변수 | 설명 |
|---|---|
| 와일드카드 | 조건이 와일드카드 문자열임을 나타냅니다. |
| match 절이 문자열이 아닌 경우 매개변수는 다음과 같습니다. | |
| 무시. | |
| 정확한 | match 절이 문자열인 경우 다음을 수행해야 함을 나타냅니다. |
| 정확히 일치합니다. match 절이 문자열이 아닌 경우 이 매개 변수 | |
| 는 무시됩니다. | |
| caseSensitive |
대/소문자를 구분하여 일치를 수행합니다. match 절이 아닌 경우 |
| 문자열인 경우 이 매개변수는 무시됩니다. | |
| 파일 | value 문이 아닌 파일에서 입력을 받습니다. 만약에 |
| 여러 파일 매개변수가 포함되며 마지막 매개변수만 포함됩니다. | |
| 사용. 파일의 각 줄은 다음과 같이 읽고 평가됩니다. | |
Switch 성명서. |
|
| 정규식 | 값에 대한 정규식 일치를 수행합니다. |
| 조건. 만약 | |
| 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