Поскольку он находится в канале, продолжение выходит из канала и пытается перейти к следующему объекту в массиве над объектом. Вместо этого используйте Return, который вернется к следующему объекту в трубе
Продолжить будет работать в этой ситуации:
foreach($item in $OutsideArray){
if($item -eq "three"){
continue
}
$item
}
Возврат будет работать в этом:
$InsideArray = @("one","two","three","four","five")
$InsideArray | ForEach-Object {
if($_ -eq "three"){
try
{
Get-Item -Path "x:\foo" -ErrorAction Stop
}
catch [System.Exception]
{
Write-Error $_
return
}
}
Write-Output $_
}
В последнем приведенном ниже примере вы увидите, что при нажатии продолжения в трубе он переходит к следующему элементу в $ OutsideArray . Он никогда не попадет в оператор "Внешний конец" , потому что канал заставляет ForEach перейти к следующему числу.
foreach($item in $OutsideArray){
"Outside Start : $item"
$InsideArray = @("one","two","three","four","five")
$InsideArray | ForEach-Object {
if($_ -eq "three"){
try
{
Get-Item -Path "x:\foo" -ErrorAction Stop
}
catch [System.Exception]
{
continue
}
}
"Inside : $_"
}
"Outside End : $item"
}