替换多个 if 语句



我使用的是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}则会阻止输出1234

相关内容

  • 没有找到相关文章

最新更新