powershell - 替换多个 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}
会阻止输出12
和34
推荐阅读
- apache-nifi - 如何将 HDF NiFi 版本升级到最新版本?
- java - 自定义警报对话框背景颜色
- python - 使用列表导航 selenium web 驱动程序
- api - Jmeter 中的 x-appiyo-key 和 x-appiyo-hash 是什么?
- reactjs - 使用 Material-UI 的 ButtonBase 和 gatsby-background-image
- php - MySQL:仅在另一个表条件时插入...如果不是则重试
- python - 如何将多个用户输入放入字典,然后按数字顺序打印
- javascript - 如何在 Django 模板表单按钮单击中对列表进行排序?
- php - 在 WooCommerce 单品中根据重量替换添加到购物车按钮
- c++ - 如何在 Rust 中编译和链接 .cpp 文件?