仅在嵌套循环中突破内循环

Fid*_*eak 4 powershell powershell-3.0

我正在尝试实现一个中断,所以当我得到结果xxxxx次时我不必继续循环.

$baseFileCsvContents | ForEach-Object {
    # Do stuff
    $fileToBeMergedCsvContents | ForEach-Object {
        If ($_.SamAccountName -eq $baseSameAccountName) {
            # Do something
            break
        }
        # Stop doing stuff in this For Loop
    }
    # Continue doing stuff in this For Loop
}
Run Code Online (Sandbox Code Playgroud)

问题是,break正在退出两个ForEach-Object循环,我只想让它退出内循环.我尝试过读取和设置标志:outer,但是我得到的只是语法错误.

有人知道怎么做吗?

小智 5

您将无法使用ForEach-Object的命名循环,但可以使用ForEach关键字来执行此操作,如下所示:

$OuterLoop = 1..10
$InnerLoop = 25..50

$OuterLoop | ForEach-Object {
    Write-Verbose "[OuterLoop] $($_)" -Verbose
    :inner
    ForEach ($Item in $InnerLoop) {
        Write-Verbose "[InnerLoop] $($Item)" -Verbose
        If ($Item -eq 30) {
            Write-Warning 'BREAKING INNER LOOP!'
            BREAK inner
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在每当它在每个内环上达到30时,它将突破到外环并继续.