Compartilhar via


Write-Error

Grava um objeto no fluxo de erros.

Sintaxe

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

O Write-Error cmdlet declara um erro de não encerramento. Por padrão, os erros serão enviados no fluxo de erros para o programa do host para serem exibidos, juntamente com a saída.

Para gravar um erro de não encerramento, insira uma cadeia de caracteres de mensagem de erro, um objeto ErrorRecord ou um objeto Exception . Use os outros parâmetros de para preencher o registro de Write-Error erro.

Erros não terminantes gravam um erro no fluxo de erros, mas não interrompem o processamento de comandos. Se um erro não fatal for declarado em um item em uma coleção de itens de entrada, o comando continuará a processar os outros itens na coleção.

Para declarar um erro de encerramento, use a Throw palavra-chave. Para obter mais informações, consulte about_Throw.

Exemplos

Exemplo 1: Escrever um erro para o objeto RegistryKey

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

Esse comando declara um erro de não encerramento quando o Get-ChildItem cmdlet retorna um Microsoft.Win32.RegistryKey objeto, como os objetos nas HKLM: unidades ou HKCU: do provedor do Registro do PowerShell.

Exemplo 2: Gravar uma mensagem de erro no console

Write-Error "Access denied."

Esse comando declara um erro não fatal e grava um erro "Acesso negado". O comando usa o parâmetro Message para especificar a mensagem, mas omite o nome do parâmetro Message opcional.

Exemplo 3: Escreva um erro no console e especifique a categoria

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

Esse comando declara um erro não fatal e especifica uma categoria de erro.

Exemplo 4: Escrever um erro usando um 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."

Esse comando usa um objeto Exception para declarar um erro de não encerramento.

O primeiro comando usa uma tabela de hash para criar o objeto System.Exception . Ele salva o objeto de exceção na $E variável. Você pode usar uma tabela de hash para criar qualquer objeto de um tipo que possui um construtor nulo.

O segundo comando usa o Write-Error cmdlet para declarar um erro de não encerramento. O valor do parâmetro Exception é o objeto Exception na $E variável.

Parâmetros

-Category

Especifica a categoria do erro. O valor padrão é NotSpecified. Os valores aceitáveis para esse parâmetro são:

  • NotSpecified
  • Erro aberto
  • Erro de fechamento
  • Erro de dispositivo
  • DeadlockDetectado
  • InvalidArgument
  • Dados inválidos
  • InvalidOperation
  • Resultado inválido
  • Tipo inválido
  • MetadataError
  • NotImplemented
  • Não instalado
  • ObjectNotFound
  • OperaçãoInterrompida
  • OperationTimeout
  • Erro de sintaxe
  • ParserError
  • PermissionDenied
  • Recurso ocupado
  • ResourceExists
  • RecursoIndisponível
  • Erro de leitura
  • Erro de gravação
  • FromStdErr
  • SecurityError
  • ProtocolError
  • Erro de conexão
  • AuthenticationError
  • LimitesExcedidos
  • QuotaExceeded
  • NotEnabled

Para obter informações sobre as categorias de erro, consulte Enumeração ErrorCategory.

Tipo:ErrorCategory
Valores aceitos: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
Cargo:Named
Valor padrão:NotSpecified
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-CategoryActivity

Especifica a ação que causou o erro.

Tipo:String
Aliases:Activity
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-CategoryReason

Especifica como ou por que a atividade causou o erro.

Tipo:String
Aliases:Reason
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-CategoryTargetName

Especifica o nome do objeto que estava sendo processado quando o erro ocorreu.

Tipo:String
Aliases:TargetName
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-CategoryTargetType

Especifica o tipo do objeto que estava sendo processado quando o erro ocorreu.

Tipo:String
Aliases:TargetType
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ErrorId

Especifica uma cadeia de caracteres de identificação para identificar o erro. A cadeia de caracteres deve ser exclusiva para o erro.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ErrorRecord

Especifica um objeto de registro de erro que representa o erro. Usa as propriedades do objeto para descrever o erro.

Para criar um objeto de registro de erro, use o New-Object cmdlet ou obtenha um objeto de registro de erro da matriz na $Error variável automática.

Tipo:ErrorRecord
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Exception

Especifica um objeto de exceção que representa o erro. Usa as propriedades do objeto para descrever o erro.

Para criar um objeto de exceção, use uma tabela de hash ou use o New-Object cmdlet.

Tipo:Exception
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Message

Especifica o texto da mensagem de erro. Se a expressão incluir espaços ou caracteres especiais, coloque-a entre aspas. Você também pode canalizar uma string de mensagem para Write-Error.

Tipo:String
Aliases:Msg
Cargo:0
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-RecommendedAction

Especifica a ação que o usuário deve executar para resolver ou evitar o erro.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-TargetObject

Especifica o objeto que estava sendo processado quando o erro ocorreu. Insira o objeto, uma variável que contém o objeto ou um comando que obtém o objeto.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

String

Você pode canalizar uma cadeia de caracteres que contém uma mensagem de erro para esse cmdlet.

Saídas

None

Esse cmdlet não retorna nenhuma saída. Ele grava apenas no fluxo de mensagens de erro.

Observações

Write-Error não altera o valor da variável automática, portanto, não sinaliza uma condição de $? erro de encerramento. Para sinalizar um erro de encerramento, use o método $PSCmdlet.WriteError().