PowerShell 技能连载 - 翻译错误记录

Whenever PowerShell records an error, it wraps it in an Error Record object. Here is a function that takes such an error record and extracts the useful information:
当 PowerShell 记录一个错误时,它将错误信息包装在一个 Error Record 对象中。以下是一个处理这种错误记录并解析有用信息的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#requires -Version 3.0
function Get-ErrorDetail
{
param
(
[Parameter(Mandatory,ValueFromPipeline)]
$e
)
process
{
if ($e -is [Management.Automation.ErrorRecord])
{
[PSCustomObject]@{
Reason = $e.CategoryInfo.Reason
Exception = $e.Exception.Message
Target = $e.CategoryInfo.TargetName
Script = $e.InvocationInfo.ScriptName
Line = $e.InvocationInfo.ScriptLineNumber
Column = $e.InvocationInfo.OffsetInLine
Datum = Get-Date
User = $env:USERNAME
}
}
}
}

如果您想知道最后的错误信息是什么,请试试这个:

1
2
3
PS C:\> $error | Get-ErrorDetail | Out-GridView

PS C:\>

或者,您现在可以简单地命令一个 cmdlet 缓存它的错误信息,并在晚些时候处理它们。这个例子递归地在 Windows 文件夹中搜索 PowerShell 脚本。您可以获取结果,以及搜索时发生的所有错误的详细信息:

1
2
3
$files = Get-ChildItem -Path c:\Windows -Filter *.ps1 -Recurse -ErrorAction SilentlyContinue -ErrorVariable myErrors

$myErrors| Get-ErrorDetail | Out-GridView

本文国际来源:Translating Error Records

评论