Чтобы создать список всех ошибок, которые произошли во время данного сегмента кода (при условии, что ошибки не прерваны при выполнении), вы можете сделать что-то вроде этого:
$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
), поэтому список ошибок, созданный приведенным выше кодом, может оказаться не таким полезным, как вы ожидаете.