模拟-自定义powershell函数中的ErrorAction
如何在自定义powershell函数中模拟-ErrorAction。例如,考虑下面的脚本模拟-自定义powershell函数中的ErrorAction,powershell,Powershell,如何在自定义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-错误动作停止 当Foo2中出现错误时,是否可以停止执行Foo1,而不
function Foo2
{
Write-Host "in Foo2"
#...Error occurs
Foo3
}
function Foo1
{
Write-Host "in Foo1"
Foo2
}
function Foo3
{
Write-Host "in Foo3"
}
PS>Foo1-错误动作停止
当Foo2中出现错误时,是否可以停止执行Foo1,而不是继续执行Foo3?
获取有关函数的帮助\u CmdletBindingAttribute
function Foo2
{
Write-Host "in Foo2"
Try {something}
Catch {
Write-host "Foo2 blew up!"
return
}
Foo3
}
你想要:
function Foo1() {
[CmdletBinding()]
PARAM()
process{
Write-Host "in Foo1"
Foo2
}
}
函数Foo1(){
[CmdletBinding()]
PARAM()
过程{
写主机“在Foo1中”
食物2
}
}
这与仿真无关,它意味着在函数中真正实现公共参数;如果这是你的意图
之后,您可以这样工作: Foo1 -ErrorAction stop Foo1-错误动作停止 您可以对
Foo2
和Foo3
使用相同的语法
要记录错误,请像往常一样使用重定向。这里有一个示例来说明@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"
给予
我在这里
完成!
我在这里
库库
a C:\Dédevelopments\Pgdvlp_Powershell\Sources partagées\Menus contextel Explorer\Test-ErrorAction.ps1:ligne:23克拉:17
+Test ErrorAction让我说清楚,就像基于ErrorAction的值发生错误时标准cmdlet将如何停止或继续一样,我希望Foo1的行为与此完全相同,我也希望记录错误。我该怎么做呢?如果您使用cmdletbinding
,您完全可以免费做到这一点!请参阅我的编辑。小说明,写入错误
调用或嵌套命令中的错误将使用该命令,写入主机
将不使用该命令。:)注意:同样值得注意的是,要使ErrorAction
按您预期的方式运行,您应该使用Write Error
引发错误。如果您抛出
异常,ErrorAction
/ErrorActionPreference
没有影响;根据定义,例外情况是停止(终止错误)。
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"