Compartir a través de


Write-Error

Escribe un objeto en la secuencia de errores.

Sintaxis

Write-Error
     [-Message] <string>
     [-Category <ErrorCategory>]
     [-ErrorId <string>]
     [-TargetObject <Object>]
     [-RecommendedAction <string>]
     [-CategoryActivity <string>]
     [-CategoryReason <string>]
     [-CategoryTargetName <string>]
     [-CategoryTargetType <string>]
     [<CommonParameters>]
Write-Error
     [-Exception] <Exception>
     [-Message <string>]
     [-Category <ErrorCategory>]
     [-ErrorId <string>]
     [-TargetObject <Object>]
     [-RecommendedAction <string>]
     [-CategoryActivity <string>]
     [-CategoryReason <string>]
     [-CategoryTargetName <string>]
     [-CategoryTargetType <string>]
     [<CommonParameters>]
Write-Error
     [-ErrorRecord] <ErrorRecord>
     [-RecommendedAction <string>]
     [-CategoryActivity <string>]
     [-CategoryReason <string>]
     [-CategoryTargetName <string>]
     [-CategoryTargetType <string>]
     [<CommonParameters>]

Description

El cmdlet Write-Error declara un error de no terminación. De forma predeterminada, los errores se envían en la secuencia de errores al programa host que se va a mostrar, junto con la salida.

Para escribir un error de no terminación, escriba una cadena de mensaje de error, un objeto ErrorRecord o un objeto Exception. Use los demás parámetros de Write-Error para rellenar el registro de error.

Los errores de no terminación escriben un error en la secuencia de errores, pero no detienen el procesamiento de comandos. Si se declara un error de no terminación en un elemento de una colección de elementos de entrada, el comando continúa procesando los demás elementos de la colección.

Para declarar un error de terminación, use la palabra clave Throw. Para obtener más información, vea about_Throw.

Ejemplos

Ejemplo 1: Escritura de un error para el objeto RegistryKey

Get-ChildItem | ForEach-Object {
    if ($_.GetType().ToString() -eq "Microsoft.Win32.RegistryKey")
    {
        Write-Error "Invalid object" -ErrorId B1 -TargetObject $_
    }
    else
    {
        $_
    }
}

Este comando declara un error de no terminación cuando el cmdlet Get-ChildItem devuelve un objeto Microsoft.Win32.RegistryKey, como los objetos de la HKLM: o las unidades de HKCU: del proveedor del Registro de PowerShell.

Ejemplo 2: Escribir un mensaje de error en la consola

Write-Error "Access denied."

Este comando declara un error de no terminación y escribe un error de "Acceso denegado". El comando usa el parámetro Message para especificar el mensaje, pero omite el nombre de parámetro opcional Message.

Ejemplo 3: Escribir un error en la consola y especificar la categoría

Write-Error -Message "Error: Too many input values." -Category InvalidArgument

Este comando declara un error de no terminación y especifica una categoría de error.

Ejemplo 4: Escritura de un error mediante un objeto Exception

$E = [System.Exception]@{Source="Get-ParameterNames.ps1";HelpLink="https://go.microsoft.com/fwlink/?LinkID=113425"}
Write-Error -Exception $E -Message "Files not found. The $Files location doesn't contain any XML files."

Este comando usa un objeto Exception para declarar un error de no terminación.

El primer comando usa una tabla hash para crear el objeto System.Exception. Guarda el objeto de excepción en la variable $E. Puede usar una tabla hash para crear cualquier objeto de un tipo que tenga un constructor NULL.

El segundo comando usa el cmdlet Write-Error para declarar un error de no terminación. El valor del parámetro exception es el objeto exception en la variable $E.

Parámetros

-Category

Especifica la categoría del error. El valor predeterminado es NotSpecified. Los valores aceptables para este parámetro son:

  • NotSpecified
  • OpenError
  • CloseError
  • DeviceError
  • InterbloqueoDetected
  • InvalidArgument
  • InvalidData
  • InvalidOperation
  • InvalidResult
  • InvalidType
  • MetadataError
  • NotImplemented
  • NotInstalled
  • ObjectNotFound
  • Operación detenida
  • OperationTimeout
  • SyntaxError
  • ParserError
  • PermissionDenied
  • ResourceBusy
  • ResourceExists
  • ResourceUnavailable
  • ReadError
  • WriteError
  • FromStdErr
  • SecurityError
  • ProtocolError
  • ConnectionError
  • AuthenticationError
  • LimitsExceed
  • QuotaExceeded
  • NotEnabled

Para obtener información sobre las categorías de error, vea ErrorCategory (enumeración).

Tipo:ErrorCategory
Valores aceptados:NotSpecified, OpenError, CloseError, DeviceError, DeadlockDetected, InvalidArgument, InvalidData, InvalidOperation, InvalidResult, InvalidType, MetadataError, NotImplemented, NotInstalled, ObjectNotFound, OperationStopped, OperationTimeout, SyntaxError, ParserError, PermissionDenied, ResourceBusy, ResourceExists, ResourceUnavailable, ReadError, WriteError, FromStdErr, SecurityError, ProtocolError, ConnectionError, AuthenticationError, LimitsExceeded, QuotaExceeded, NotEnabled
Posición:Named
Valor predeterminado:NotSpecified
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-CategoryActivity

Especifica la acción que provocó el error.

Tipo:String
Alias:Activity
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-CategoryReason

Especifica cómo o por qué la actividad provocó el error.

Tipo:String
Alias:Reason
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-CategoryTargetName

Especifica el nombre del objeto que se estaba procesando cuando se produjo el error.

Tipo:String
Alias:TargetName
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-CategoryTargetType

Especifica el tipo del objeto que se estaba procesando cuando se produjo el error.

Tipo:String
Alias:TargetType
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ErrorId

Especifica una cadena de identificador para identificar el error. La cadena debe ser única para el error.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ErrorRecord

Especifica un objeto de registro de errores que representa el error. Use las propiedades del objeto para describir el error.

Para crear un objeto de registro de errores, use el cmdlet New-Object o obtenga un objeto de registro de errores de la matriz en el $Error variable automática.

Tipo:ErrorRecord
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Exception

Especifica un objeto de excepción que representa el error. Use las propiedades del objeto para describir el error.

Para crear un objeto de excepción, use una tabla hash o use el cmdlet New-Object.

Tipo:Exception
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Message

Especifica el texto del mensaje del error. Si el texto incluye espacios o caracteres especiales, escríbalo entre comillas. También puede canalizar una cadena de mensaje a Write-Error.

Tipo:String
Alias:Msg
Posición:0
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-RecommendedAction

Especifica la acción que el usuario debe realizar para resolver o evitar el error.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-TargetObject

Especifica el objeto que se estaba procesando cuando se produjo el error. Escriba el objeto , una variable que contiene el objeto o un comando que obtiene el objeto .

Tipo:Object
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

String

Puede canalizar una cadena que contenga un mensaje de error a este cmdlet.

Salidas

None

Este cmdlet no devuelve ninguna salida. Solo escribe en el flujo de mensajes de error.

Notas

Write-Error no cambia el valor de la variable automática $?, por lo tanto, no indica una condición de error de terminación. Para indicar un error de terminación, use el método $PSCmdlet.WriteError().