Switch 本是多路分支的关键字,但是在Powershell中由于Switch支持集合,所以也可以使用它进行循环处理。下面举两个例子。
第一个将Foreach循环转换成Switch循环:
#使用Foreach循环
$nums=10..7
foreach($n in $nums)
{
"n=$n"
}
n=10
n=9
n=8
n=7
#使用Switch循环
$nums = 10..7
Switch ($nums)
{
Default { "n= $_" }
}
n= 10
n= 9
n= 8
n= 7
有时对集合的处理,在循环中还须条件判断,使用Switch循环可以一部到位,例如:
$nums = 10..7
Switch ($nums)
{
{($_ % 2) -eq 0} {"$_ 偶数"}
{($_ % 2) -ne 0} {"$_ 奇数"}
}
10 偶数
9 奇数
8 偶数
7 奇数
本文链接: https://www.pstips.net/powershell-switch-loop.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

基数的“基”写错了,不是这个字,应该是“奇”
非常感谢,已更新
Hi Mooser,
您好,我想请教您一个问题,我有下面一段脚本是用来跑出3个datacenter中所有的虚拟机,目前这个条件设置我在执行的时候只能一个一个来,我想再加上一条elseif($datacenter -eq “ALL”)用来一下子跑出所有的机器,请问我可以怎么设置这个条件来实现当我选ALL的时候,它会循环执行每个datacenter,非常感谢您的帮助。
Function GetAllFCvms ($datacenter) {
If($datacenter -eq “SCL”) {$DDC = “1”}
elseif($datacenter -eq “CRL”) {$DDC = “2”}
elseif($datacenter -eq “SHA”) {$DDC = “3”}
$AllFCvms = Get-BrokerMachine -AdminAddress $DDC -MaxRecordCount 20
return $AllFCvms}
Apple Liang