# encoding: ascii
# api: powershell
# title: foreach-withexception
# description: simple function like foreach, but that traps exceptions using v2, and logs then in the $lastex variable. this way the pipeline can continue and process the objects that aren’t having errors happen against them. eventually this needs to be made much better, and be a v2 advanced function
# version: 0.1
# type: function
# author: karl prosser
# license: CC0
# function: foreach-withexception
# x-poshcode-id: 864
# x-archived: 2012-04-24T13:16:02
# x-published: 2009-02-12T00:56:00
#
#
function foreach-withexception ([scriptblock]$process,$outputexception)
{
begin { $global:foreachex = @() }
process {
try
{
$local:inputitem = $_
&$process
}
catch
{
$local:exceptionitem = 1 | select-object object,exception
$local:exceptionitem.object = $local:inputitem
$local:exceptionitem.exception = $_
$global:foreachex += $local:exceptionitem
}
}
end {}
}
set-alias %ex foreach-withexception
100..-5 | %ex { "yo $_" ; 1 / $_ }
$foreachex