powershell 的 continue 语句用于跳过当前循环迭代剩余部分并进入下一次迭代,支持无标签(仅作用于最内层)和带标签(跳出指定外层)两种形式,在 foreach、while、for、switch 中均适用,使用时需注意变量更新以防死循环。
powershell 中的 continue 语句用于跳过当前循环迭代的剩余部分,直接进入下一次迭代判断,不终止整个循环。它让脚本在遇到特定条件时“绕开”本次处理,继续推进,是数据过滤和逻辑精简的关键工具。
在 ForEach 循环中跳过指定对象
这是最常见也最实用的场景。比如遍历用户列表时,想跳过管理员账户,避免误操作:
```powershell
ForEach ($user in $users) {
if ($user.Name -eq "Administrator") {
continue
}
Write-Host "正在修改用户:$($user.Name)"
}
当遇到用户名为 Administrator 的对象时,continue 立即中断本次循环体,后续的 Write-Host 不会执行,脚本直接取下一个 $user 继续处理。
在 While 或 For 循环中控制流程并防死循环
While 循环中使用 continue 时,必须确保循环变量在 continue 前或后被更新,否则可能陷入无限循环。
```powershell
$i = 0
while ($i -lt 5) {
if ($i -eq 2) {
$i++ # 先更新再跳过,防止卡在 i==2
continue
}
Write-Host $i
$i++
}
输出为:0 1 3 4(跳过了 2)。注意:continue 前的 $i++ 是必需的,否则 $i 永远等于 2,条件始终为真。
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
用带标签的 continue 跳出多层嵌套循环
当有 for、foreach 多层嵌套时,普通 continue 只影响最内层。加标签可精准控制跳转目标层级:
```powershell
:outer foreach ($x in 1..2) {
:inner foreach ($y in 1..3) {
if ($y -eq 2) {
continue outer # 直接跳出外层循环,不再处理 x=1 的剩余 y,也不进 x=2
}
Write-Host "x=$x, y=$y"
}
}
该例只输出 x=1, y=1,然后跳到 outer 标签之后——相当于“放弃当前外层循环的全部剩余迭代”。
在 Switch 中配合集合输入跳过某项匹配
当 switch 的输入是数组时,continue 表示跳过当前元素,继续处理下一个:
```powershell
switch (1, 2, 3, 4) {
2 { continue }
4 { continue }
default { "处理数字:$_" }
}
输出:处理数字:1
处理数字:3
因为 2 和 4 触发了 continue,对应元素被跳过,其余进入 default 分支。










