Powershell Switch 循环 3


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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

回复 liangapple 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

3 条评论 “Powershell Switch 循环

  • liangapple

    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