替换多个if语句

时间:2018-06-13 17:45:43

标签: powershell powershell-v4.0 powershell-remoting cmdlet

我正在使用PS 5.0版,我有很多if语句可能会随着时间的推移而增长。

if ($hostname -like "**12*") {
    Write-Output "DC1"
} elseif ($Hostname -like "**23*") {
    Write-Output "DC2"
} elseif ($Hostname -like "**34*") {
    Write-Output "DC3"
} elseif ($Hostname -like "**45*") {
    Write-Output "DC4"
}

你能建议一些更好的方法来编写相同的代码吗?

1 个答案:

答案 0 :(得分:3)

您可以使用switch语句。下面是一个使用str标志的示例,因为看起来您只是做了一个简单的匹配,然后可以删除 try: return obj.lower() except AttributeError: pass 通配符。

-Regex

如果您不想要多个匹配,请在每个案例后添加*。例如,如果您有一个主机名,例如$hostname = 'asdf12asdf' switch -Regex ($hostname) { "12" {Write-Output "DC1"} "23" {Write-Output "DC2"} "34" {Write-Output "DC3"} "45" {Write-Output "DC4"} Default {Write-Error "No Match Found"} } ,则语句; Break会阻止asdf12asdf34"12" {Write-Output "DC1"; Break}的输出