如何在Powershell中退出Foreach循环?

4

我正在寻找一种方法来中断我的Foreach循环。

这是我的代码

$MyArray = @("desktopstudio","controller","storefront","desktopdirector","licenseserver")

$component = "toto,blabla"

$component = $component.Split(",")

foreach ($value in $component)
{

    if ($MyArray -notcontains $value)
    {
        Write-host "Your parameter doesn't match"
        Write-host "Please use one of this parameter $MyArray"
        Break
    }

}

write-host "I'm here"

我不明白为什么它没有打破我的代码,因为这是我执行时的结果:

Your parameter doesn't match
Please use one of this parameter desktopstudio controller storefront desktopdirector licenseserver
I'm here

您可以看到,我的Write-Host“我在这里”被执行了,但实际上不应该执行。
1个回答

3

break语句用于退出循环或switch代码块,这就是它在您的情况下所做的。相反,您可能想要使用exit命令,在发现无效参数时停止执行脚本。

$MyArray = @("desktopstudio","controller","storefront","desktopdirector","licenseserver")

$component = "toto,blabla"

$component = $component.Split(",")

foreach ($value in $component)
{

    if ($MyArray -notcontains $value)
    {
        Write-host "Your parameter doesn't match"
        Write-host "Please use one of this parameter $MyArray"
        exit   # <--- change is here
    }

}

write-host "I'm here"

更多信息请参见 Get-Help about_Break, Get-Help exit, Get-Help return


1
如果直接使用(即不在脚本中),该版本可能会退出整个命令提示符。只是说一下。 - JensG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接