为什么PowerShell中的异常消息中的函数名称为空?如何正确地得到它?

时间:2018-04-24 14:04:35

标签: powershell powershell-v3.0

我正在尝试从异常消息中获取脚本名称,函数名称,行号和消息。除了功能名称,我可以接受其他人。 我的代码如下

function dividebyzero {
    try {
        1/0
    } catch {
        throw $_
    }
}

上述功能位于文件ExceptionSample.Psm1中。

Import-Module C:\Scripts\ExceptionSample.Psm1

function Write-ErrorLog {
    Param(
        [System.Management.Automation.ErrorRecord]$ErrorInfo
    )
    $formatstring = "[Script ({0}), function {1} , Line {2}, Message {3}]" 
    if ($ErrorInfo.InvocationInfo.ScriptName) {
        # this is done to correctly recieve the original error back from Pester mocks
        $scriptname = $(Split-Path -Path $ErrorInfo.InvocationInfo.ScriptName -Leaf)
    }
    $fields = $scriptname,
              $ErrorInfo.InvocationInfo.MyCommand.Name,
              $ErrorInfo.InvocationInfo.ScriptLineNumber,
              $ErrorInfo.Exception.Message

    $formatstring -f $fields    
}

try {
    dividebyzero
} catch {
    Write-ErrorLog -ErrorInfo $_        
}

输出除功能名称外。

[Script (ExceptionSample.Psm1), function  , Line 5, Message Attempted to divide by zero.] 

缺少什么?有没有其他方法来获取函数名称?

0 个答案:

没有答案