我想给别人看一个例子,说明如何在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/

10-11 09:02