当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 解释 ErrorRecord 对象

作者:精品下载站 日期:2024-12-14 02:51:18 浏览:13 分类:玩电脑

解释 ErrorRecord 对象


在大多数情况下,System.Management.Automation.ErrorRecord 对象表示由命令或脚本生成的非终止错误。终止错误还可以通过 System.Management.Automation.IContainsErrorRecord 接口在 ErrorRecord 中指定附加信息。

如果要在脚本或主机中编写错误处理程序来处理命令或脚本执行期间发生的特定错误,则必须解释 System.Management.Automation.ErrorRecord 对象以确定它是否表示所需的错误类来处理。

当 cmdlet 遇到终止或非终止错误时,它应该创建描述错误条件的错误记录。主机应用程序必须调查这些错误记录并执行任何可以减轻错误的操作。主机应用程序还必须调查错误记录以查找无法处理记录但能够继续的非终止错误,并且必须调查导致管道停止的终止错误的错误记录。

笔记

对于终止错误,cmdlet 调用 System.Management.Automation.Cmdlet.ThrowTerminateError 方法。对于非终止错误,cmdlet 调用 System.Management.Automation.Cmdlet.WriteError 方法。

错误记录设计

错误记录旨在提供异常情况下不可用的附加错误信息,同时确保每个错误记录中的组合信息是唯一的。这种唯一性允许主机应用程序检查错误记录的不同部分,以便能够识别错误情况以及主机必须采取的操作。

解释错误记录

您可以查看错误记录的多个部分来识别错误。这些部分包括以下内容:

  • 错误类别

  • 错误异常

  • 完全限定的错误标识符 (FQID)

  • 其他信息

错误类别

错误记录的错误类别是 System.Management.Automation.ErrorCategory 枚举提供的预定义常量之一。可通过 System.Management.Automation.ErrorRecord 对象的 System.Management.Automation.ErrorRecord.CategoryInfo 属性获取此信息。

该 cmdlet 可以指定 CloseError、OpenError、InvalidType、ReadError 和 WriteError 类别以及其他错误类别。主机应用程序可以使用错误类别来捕获错误组。

例外情况

错误记录中包含的异常由 cmdlet 提供,可以通过 System.Management.Automation.ErrorRecord 对象的 System.Management.Automation.ErrorRecord.Exception 属性进行访问。

主机应用程序可以使用 is 关键字来标识异常是属于特定类还是派生类。最好在异常类型上进行分支,如以下示例所示。

`if (MyNonTerminatingError.Exception is AccessDeniedException)`
{
  ...
}

这样,您就捕获了派生类。但是,如果异常被反序列化,就会出现问题。

FQID

FQID 是可用于识别错误的最具体信息。它是一个字符串,包含 cmdlet 定义的标识符、cmdlet 类的名称以及报告错误的源。通常,错误记录类似于 Windows 事件日志的事件记录。 FQID 类似于以下元组,它标识事件记录的类:(日志名称事件 ID)。

FQID 设计为作为单个字符串进行检查。然而,存在错误标识符被设计为由主机应用程序解析的情况。以下示例是格式正确的完全限定错误标识符。

CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.

在前面的示例中,第一个标记是错误标识符,后面是 cmdlet 类的名称。错误标识符可以是单个标记,也可以是点分隔的标识符,允许在检查标识符时进行分支。请勿在错误标识符中使用空格或标点符号。尤其重要的是不要使用逗号; Windows PowerShell 使用逗号来分隔标识符和 cmdlet 类名。

其他信息

System.Management.Automation.ErrorRecord 对象还可能提供描述发生错误的环境的信息。该信息包括错误详细信息、调用信息以及错误发生时正在处理的目标对象等项目。尽管此信息可能对主机应用程序有用,但通常不用于识别错误。此信息可通过以下属性获得:

  • System.Management.Automation.ErrorRecord.ErrorDetails

  • System.Management.Automation.ErrorRecord.InitationInfo

  • System.Management.Automation.ErrorRecord.TargetObject

参见

  • 系统.管理.自动化.错误记录

  • 系统.管理.自动化.错误类别

  • 系统.管理.自动化.ErrorCategoryinfo

  • System.Management.Automation.Cmdlet.WriteError

  • System.Management.Automation.Cmdlet.Throwterminationerror*

  • 将非终止错误报告添加到您的 Cmdlet

  • Windows PowerShell 错误报告

  • 编写 Windows PowerShell Cmdlet

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯