檢閱和使用 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.x 網路上的 IP 位址,則訊息會指出電腦位於內部網路上,且電腦位於倫敦或溫哥華。 如果 $ip 不是 10.x.x.x.x 網路上的 IP 位址,則訊息會指出其不在內部網路上。
如果您在陣列中提供多個值給 Switch 建構,則會評估陣列中的每個項目。 在上一個範例中,如果變數 $ip 是具有兩個 IP 位址的陣列,則會處理這兩個 IP 位址。 會針對陣列中的每個項目執行適當的動作。