2012-03-23 22 views

回答

15

因为continuebreak用于循环,而foreach-object是一个cmdlet。行为并不是你期望的,因为它只是停止整个脚本(在原始代码之后添加一个语句,你会看到该语句不会运行)

要获得类似的效果, foreach循环,您可以使用return

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

这是因为不断被应用到foreach循环($集合中的foreach $项目),而不是在foreach对象cmdlet。试试这个:

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

这:

$arr = @(1..10) 
ForEach ($i in $arr) { 
    if ($i -eq 5){ continue} 
    "output $i" 
} 
相关问题