Windows PowerShell 스크립트에서 Switch 구문 검토 및 사용
Switch 구문은 여러 ElseIf 섹션이 있는 If 구문과 유사합니다. Switch 구문은 여러 값에 대해 단일 변수 또는 항목을 평가하고 각 값에 대한 스크립트 블록을 줍니다. 해당 값이 변수와 일치하는 경우 각 값에 대한 스크립트 블록이 실행됩니다. 일치하는 항목이 없는 경우에만 실행되는 기본 섹션도 있습니다.
Switch 구문은 다음 구문을 사용합니다.
Switch ($choice) {
1 { Write-Host "You selected menu item 1" }
2 { Write-Host "You selected menu item 2" }
3 { Write-Host "You selected menu item 3" }
Default { Write-Host "You did not select a valid option" }
}
일치하는 값 외에도 Switch 구문은 패턴과 일치할 수 있습니다.
-Wildcard 매개 변수를 사용하여 -like 연산자와 동일한 구문으로 패턴 일치를 수행할 수 있습니다. 또는 매개 변수를 -Regex 사용하여 정규식을 사용하여 일치시킬 수 있습니다.
패턴 일치를 사용하면 여러 일치 항목이 가능합니다. 일치하는 항목이 여러 대 있는 경우 일치하는 모든 패턴 스크립트 블록이 실행됩니다. 이는 하나의 스크립트 블록만 실행되는 If 구문과 다릅니다.
다음 예제에서는 패턴 일치를 사용합니다.
Switch -Wildcard ($ip) {
"10.*" { Write-Host "This computer is on the internal network" }
"10.1.*" { Write-Host "This computer is in London" }
"10.2.*" { Write-Host "This computer is in Vancouver" }
Default { Write-Host "This computer is not on the internal network" }
}
런던 또는 밴쿠버 네트워크의 $ip 값에 대해 두 개의 메시지가 표시됩니다.
$ip에 10.x.x.x 네트워크의 IP 주소가 포함된 경우 메시지는 컴퓨터가 내부 네트워크에 있고 컴퓨터가 런던 또는 밴쿠버에 있음을 나타냅니다.
$ip가 10.x.x.x 네트워크의 IP 주소가 아닌 경우 메시지는 내부 네트워크에 없음을 나타냅니다.
배열의 여러 값을 Switch 구문에 제공하는 경우 배열의 각 항목이 평가됩니다. 이전 예제에서 변수 $ip 가 두 개의 IP 주소를 가진 배열인 경우 두 IP 주소가 모두 처리되고 각 항목에 대해 적절한 작업이 실행됩니다.