我想给别人看一个例子,说明如何在PowerShell中捕获非终止错误。
我创建了这个功能:
# This will write a non-terminating error
function NonTerminatingErrorExample {
Param($i = 5)
if ($i -gt 4) {
Write-Error "I expected a value less or equal to 4!"
}
Write-Host "However, I can still continue the execution"
}
但是,我无法用
-ErrorAction Stop
捕获它Try {
NonTerminatingErrorExample -ErrorAction Stop
} Catch {
Write-Host "Now you see this message."
}
我从来没有得到过返回的捕获块。为什么?
NonTerminatingErrorExample : I expected a value less or equal to 4!
In Zeile:32 Zeichen:5
+ NonTerminatingErrorExample -ErrorAction Stop
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,NonTerminatingErrorExample
However, I can still continue the execution
最佳答案
您的函数不是cmdlet,因此不支持-ErrorAction
。将[CmdletBinding()]
添加到主体以使其成为一体,并且将支持该参数。如果同时使用Get-Help
和两个版本,则可以看到区别:作为一个函数,没有[<CommonParameters>]
。
关于powershell - 为什么我不能捕捉到我的非终止错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60863702/