Создать таблицу с другим выходом - PullRequest
0 голосов
/ 20 июня 2019
Write-Host "Errors" -BackgroundColor Red
$Error.Clear()
{Some 1200 lines code}

Я хочу создать таблицу после выполнения кода с двумя столбцами: «Ошибка» и «Строка», если в коде выше были какие-либо ошибки.Но мне не удалось использовать PSCustomObject (PSObject).Это не создает таблицу.

[PSCustomObject] @{
     Error = $_.Exception.Message
     Line = $_.InvocationInfo.ScriptLineNumber
}

New-Object PSObject -Property @{
    Error   = $Error.Exception.Message
    Line    = $Error.InvocationInfo.ScriptLineNumber
}

Из-за слишком большого количества строк в коде я не хочу использовать tey / catch, так как объединить вывод из?Или даже это возможно без использования try / catch? ..

$Error.Exception.Message
$Error.InvocationInfo.ScriptLineNumber

1 Ответ

1 голос
/ 20 июня 2019

Чтобы создать список всех ошибок, которые произошли во время данного сегмента кода (при условии, что ошибки не прерваны при выполнении), вы можете сделать что-то вроде этого:

$Error.Clear()

# set error action preference so you don't have to add `-EA SilentlyContinue`
# to each statement
$EAPSave = $ErrorActionPreference
$ErrorActionPreference = 'SilentlyContinue'

# ...
# your code goes here
# ...

# restore original error action preference
$ErrorActionPreference = $EAPSave

$Error | ForEach-Object {
    [PSCustomObject]@{
        'Error' = $_.Exception.Message
        'Line'  = $_.InvocationInfo.ScriptLineNumber
    }
}

Обратите внимание, однако, что во многих случаяхсоответствующая информация об ошибках скрыта во вложенных исключениях ($_.Exception.InnerException), поэтому список ошибок, созданный приведенным выше кодом, может оказаться не таким полезным, как вы ожидаете.

...