我使用的是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"
}
你能建议一些更好的方法来编写相同的代码吗?
您可以使用 switch 语句。下面是一个使用-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}
则会阻止输出12
和34