То, что я пытаюсь сделать, это получить функцию, чтобы остановить фид конвейера, когда достигнут лимит времени. Я создал тестовую функцию следующим образом:
function Test-PipelineStuff
{
[cmdletbinding()]
Param(
[Parameter(ValueFromPipeLIne=$true)][int]$Foo,
[Parameter(ValueFromPipeLIne=$true)][int]$MaxMins
)
begin {
"THE START"
$StartTime = Get-Date
$StopTime = (get-date).AddMinutes($MaxMins)
"Stop time is: $StopTime"
}
process
{
$currTime = Get-Date
if( $currTime -lt $StopTime ){
"Processing $Foo"
}
else{
continue;
}
}
end { "THE END" }
}
Это, безусловно, остановит конвейер, но никогда не называет мой блок "end {}", что в этом случае жизненно важно. Кто-нибудь знает, почему мой "end {}" блок не вызывается, когда я останавливаю конвейер, используя "continue"? Поведение, похоже, одинаково, если я выкидываю исключение PipelineStoppedException.