【发布时间】:2016-07-28 05:17:12
【问题描述】:
我经常需要在 PowerShell 中循环遍历数据集(SQL 结果、计算机列表等),每次都执行相同的操作(例如函数 X)。我几乎只使用foreach 循环,因为它们简单、有效且易于被可能需要遵循我的代码的其他人理解。
在重试失败的操作(最多 Y 次)的意义上,我想让我的一些代码更健壮。实现这一点的方法不止一种,例如 在 foreach 循环中,将函数 X 包装在 do{} while() 循环中。在这个例子中,假设函数 X 只有在“成功”时才返回非空结果:
foreach($dataitem in $dataset){
$Result = $null
$Attempts = 0
do{
$Attempts++
$Result = <call function X on $dataitem>
} while(($Attempts -lt 3) -and (-not $Result))
}
我想知道是否有任何方法可以将这个逻辑扁平化一点,即使用 foreach 循环的更高级方法,所以我可以取消 do{} while() 循环。
我遇到了与我想要的相反的情况,即使用$foreach.MoveNext() 在循环中向前跳过,但没有发现任何(危险的?)会使 foreach 处理相同项目的东西。
本质上:可以使用 foreach 循环重新进行迭代吗?。
【问题讨论】:
标签: loops powershell foreach