Почему имя функции пусто в сообщениях об исключениях в PowerShell?Как правильно это получить? - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь получить имя сценария, имя функции, номер строки и сообщение из сообщения об исключении.Кроме имени функции я могу взять другие.Мой код, как показано ниже

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.] 

Чего не хватает?Есть ли другой способ получить имя функции?

...