2012-03-23 11 views

Respuesta

15

Porque continue y break son para bucles y foreach-object es un cmdlet. El comportamiento no es realmente lo que espera, porque solo está deteniendo el script completo (agregue una instrucción después del código original y verá que esa instrucción no se ejecuta)

Para obtener un efecto similar al de continuar utilizado en un bucle foreach, puede utilizar return:

$arr = @(1..10) 
$arr | ForEach-Object { 
    if ($_ -eq 5){ return} 
    "output $_" 
} 
5

es debido a que el continue se aplica al bucle foreach ($ foreach elemento de la colección $) y no en el cmdlet forEach-Object. intente esto:

$arr = @(1..10) 
$arr | ForEach-Object { 
    if ($_ -eq 5){ return} 
    "output $_" 
} 

y esto:

$arr = @(1..10) 
ForEach ($i in $arr) { 
    if ($i -eq 5){ continue} 
    "output $i" 
} 
Cuestiones relacionadas