How to emulate -ErrorAction in custom powershell function. For example consider the following script
开发者_如何学JAVAfunction Foo2
{
Write-Host "in Foo2"
#...Error occurs
Foo3
}
function Foo1
{
Write-Host "in Foo1"
Foo2
}
function Foo3
{
Write-Host "in Foo3"
}
PS>Foo1 -ErrorAction stop
Is it possible to stop the execution of Foo1 when error occurs in Foo2, instead of proceeding with execution of Foo3 ?
get-help about_Functions_CmdletBindingAttribute
You want:
function Foo1() { [CmdletBinding()] PARAM() process{ Write-Host "in Foo1" Foo2 } }
This is not about emulation, it means really implementing common parameters in your function; if this was your intention.
After that, you can work like this:
Foo1 -ErrorAction stop
You can use the same syntax for Foo2
and Foo3
.
To log error use redirection as usual.
Here is a sample to illustrate @Empo Answer
function Test-ErrorAction
{
[CmdletBinding()]
Param( )
begin
{
Write-Host "I'am Here"
}
Process
{
Write-Error "coucou"
}
end
{
Write-Host "Done !"
}
}
clear
Test-ErrorAction -ErrorAction "silentlycontinue"
Test-ErrorAction -ErrorAction "stop"
gives
I'am Here
Done !
I'am Here
coucou
à C:\Développements\Pgdvlp_Powershell\Sources partagées\Menus Contextuel Explorer\Test-ErrorAction.ps1: ligne:23 caractère:17
+ Test-ErrorAction <<<< -ErrorAction "stop"
function Foo2
{
Write-Host "in Foo2"
Try {something}
Catch {
Write-host "Foo2 blew up!"
return
}
Foo3
}
精彩评论