我正在使用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"
}
你能建议一些更好的方法来编写相同的代码吗?
答案 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}
的输出