2

我正在寻找一种方法来打破我的 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

你可以看到 myWrite-Host "I'm here"被执行,而它不应该被执行。

4

1 回答 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了解更多信息。

于 2014-09-18T11:35:19.223 回答