Búsqueda de sitios web

Interpretación de objetos ErrorRecord


En la mayoría de los casos, un objeto System.Management.Automation.ErrorRecord representa un error sin terminación generado por un comando o secuencia de comandos. Los errores de terminación también pueden especificar información adicional en un ErrorRecord a través de la interfaz System.Management.Automation.IContainsErrorRecord.

Si desea escribir un controlador de errores en su secuencia de comandos o un host para manejar errores específicos que ocurren durante la ejecución del comando o secuencia de comandos, debe interpretar el objeto System.Management.Automation.ErrorRecord para determinar si representa la clase de error que desea. para manejar.

Cuando un cmdlet encuentra un error de terminación o de no terminación, debe crear un registro de error que describa la condición del error. La aplicación host debe investigar estos registros de errores y realizar cualquier acción que mitigue el error. La aplicación host también debe investigar los registros de errores en busca de errores de no terminación que no pudieron procesar un registro pero pudieron continuar, y debe investigar los registros de errores en busca de errores de terminación que provocaron que se detuviera la canalización.

Nota

Para finalizar errores, el cmdlet llama al método System.Management.Automation.Cmdlet.ThrowTerminatingError. Para errores que no terminan, el cmdlet llama al método System.Management.Automation.Cmdlet.WriteError.

Diseño de registro de errores

Los registros de error están diseñados para proporcionar información de error adicional que no está disponible en las excepciones, al tiempo que garantiza que la información combinada en cada registro de error sea única. Esta unicidad permite que la aplicación host inspeccione las diferentes partes del registro de error para poder identificar la condición de error y la acción que debe tomar el host.

Interpretación de registros de errores

Puede revisar varias partes del registro de errores para identificar el error. Estas partes incluyen lo siguiente:

  • La categoría de error

  • La excepción de error

  • El identificador de error completo (FQID)

  • Otra información

La categoría de error

La categoría de error del registro de error es una de las constantes predefinidas proporcionadas por la enumeración System.Management.Automation.ErrorCategory. Esta información está disponible a través de la propiedad System.Management.Automation.ErrorRecord.CategoryInfo del objeto System.Management.Automation.ErrorRecord.

El cmdlet puede especificar las categorías CloseError, OpenError, InvalidType, ReadError y WriteError, y otras categorías de error. La aplicación host puede utilizar la categoría de error para capturar grupos de errores.

La excepción

La excepción incluida en el registro de error la proporciona el cmdlet y se puede acceder a ella a través de la propiedad System.Management.Automation.ErrorRecord.Exception del objeto System.Management.Automation.ErrorRecord.

Las aplicaciones host pueden utilizar la palabra clave is para identificar que la excepción es de una clase específica o de una clase derivada. Es mejor bifurcarse en el tipo de excepción, como se muestra en el siguiente ejemplo.

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

De esta manera, capturas las clases derivadas. Sin embargo, existen problemas si se deserializa la excepción.

El FQID

El FQID es la información más específica que puede utilizar para identificar el error. Es una cadena que incluye un identificador definido por cmdlet, el nombre de la clase de cmdlet y la fuente que informó el error. En general, un registro de error es análogo a un registro de evento de un registro de eventos de Windows. El FQID es análogo a la siguiente tupla, que identifica la clase del registro de evento: (nombre de registro, fuente, ID de evento).

El FQID está diseñado para inspeccionarse como una sola cadena. Sin embargo, existen casos en los que el identificador de error está diseñado para ser analizado por la aplicación host. El siguiente ejemplo es un identificador de error completo y bien formado.

CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.

En el ejemplo anterior, el primer token es el identificador de error, seguido del nombre de la clase de cmdlet. El identificador de error puede ser un token único o puede ser un identificador separado por puntos que permite la bifurcación al inspeccionar el identificador. No utilice espacios en blanco ni puntuación en el identificador de error. Es especialmente importante no utilizar comas; Windows PowerShell utiliza una coma para separar el identificador y el nombre de clase del cmdlet.

Otra información

El objeto System.Management.Automation.ErrorRecord también puede proporcionar información que describa el entorno en el que se produjo el error. Esta información incluye elementos como detalles del error, información de invocación y el objeto de destino que se estaba procesando cuando ocurrió el error. Aunque esta información puede resultar útil para la aplicación host, normalmente no se utiliza para identificar el error. Esta información está disponible a través de las siguientes propiedades:

  • System.Management.Automation.ErrorRecord.ErrorDetails

  • System.Management.Automation.ErrorRecord.InvocationInfo

  • System.Management.Automation.ErrorRecord.TargetObject

Ver también

  • Registro de errores de automatización de gestión del sistema

  • Categoría.de.error.de.automatización.de.gestión.del.sistema

  • System.Management.Automation.ErrorCategoryinfo

  • System.Management.Automation.Cmdlet.WriteError

  • Error de terminación de lanzamiento del cmdlet de automatización de administración del sistema*

  • Agregar informes de errores sin terminación a su cmdlet

  • Informe de errores de Windows PowerShell

  • Escribir un cmdlet de Windows PowerShell

Artículos relacionados