我正在寻找一种方法来打破我的 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 "I'm here"
被执行了,而它不应该被执行。
最佳答案
break 语句用于退出循环或 switch block ,这正是它在您的情况下所做的。相反,您可能希望在发现无效参数时使用 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
了解更多信息。
关于loops - 如何打破 Powershell 中的 Foreach 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25911180/