如何在自定义PowerShell函数中模拟-ErrorAction。例如,考虑以下脚本
function 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
当Foo2发生错误时,是否可以停止执行Foo1,而不是继续执行Foo3?
此致 哎呀
答案 0 :(得分:10)
get-help about_Functions_CmdletBindingAttribute
你想:
function Foo1() { [CmdletBinding()] PARAM() process{ Write-Host "in Foo1" Foo2 } }
这不是关于 emulation ,它意味着在你的函数中真正实现通用参数;如果这是你的意图。
之后,你可以像这样工作:
Foo1 -ErrorAction stop
您可以对Foo2
和Foo3
使用相同的语法。
要像往常一样记录错误使用重定向。
答案 1 :(得分:7)
这是一个说明@Empo答案
的示例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"
给出
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"
答案 2 :(得分:0)
function Foo2
{
Write-Host "in Foo2"
Try {something}
Catch {
Write-host "Foo2 blew up!"
return
}
Foo3
}