Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Na maioria dos casos, um objeto System.Management.Automation.ErrorRecord representa um erro não terminativo gerado por um comando ou script. Os erros de encerramento também podem especificar as informações adicionais em um ErrorRecord por meio da interface System.Management.Automation.IContainsErrorRecord do.
Se desejar escrever um manipulador de erros em seu script ou em um host para manipular erros específicos que ocorrem durante a execução de comandos ou scripts, você deve interpretar o objeto System.Management.Automation.ErrorRecord para determinar se ele representa a classe de erro que você deseja manipular.
Quando um cmdlet encontra um erro de encerramento ou não encerramento, ele deve criar um registro de erro que descreva a condição de erro. O aplicativo host deve investigar esses registros de erro e executar qualquer ação que atenue o erro. O aplicativo host também deve investigar registros de erro para erros não terminativos que não conseguiram processar um registro, mas puderam continuar, e deve investigar registros de erro para encerrar erros que fizeram com que o pipeline parasse.
Observação
Para erros de encerramento, o cmdlet chama o System.Management.Automation.Cmdlet.ThrowTerminatingError método. Para erros não terminativos, o cmdlet chama o método System.Management.Automation.Cmdlet.WriteError.
Design de registro de erro
Os registros de erro são projetados para fornecer informações de erro adicionais que não estão disponíveis em exceções, garantindo que as informações combinadas em cada registro de erro sejam exclusivas. Essa exclusividade permite que o aplicativo host inspecione as diferentes partes do registro de erro para que possa identificar a condição de erro e a ação que o host deve tomar.
Interpretando registros de erro
Você pode revisar várias partes do registro de erro para identificar o erro. Essas partes incluem o seguinte:
A categoria de erro
A exceção de erro
O identificador de erro totalmente qualificado (FQID)
Outras informações
A categoria de erro
A categoria de erro do registro de erro é uma das constantes predefinidas fornecidas pelo System.Management.Automation.ErrorCategory enumeração. Essas informações estão disponíveis por meio da propriedade System.Management.Automation.ErrorRecord.CategoryInfo do objeto System.Management.Automation.ErrorRecord do.
O cmdlet pode especificar as categorias CloseError, OpenError, InvalidType, ReadError e WriteError e outras categorias de erro. O aplicativo host pode usar a categoria de erro para capturar grupos de erros.
A exceção
A exceção incluída no registro de erro é fornecida pelo cmdlet e pode ser acessada por meio da propriedade System.Management.Automation.ErrorRecord.Exception do objeto System.Management.Automation.ErrorRecord do.
Os aplicativos host podem usar a palavra-chave is para identificar que a exceção é de uma classe específica ou de uma classe derivada. É melhor ramificar no tipo de exceção, como mostrado no exemplo a seguir.
`if (MyNonTerminatingError.Exception is AccessDeniedException)`
{
...
}
Dessa forma, você pega as classes derivadas. No entanto, há problemas se a exceção for desserializada.
O FQID
O FQID é a informação mais específica que você pode usar para identificar o erro. É uma cadeia de caracteres que inclui um identificador definido pelo cmdlet, o nome da classe do cmdlet e a fonte que relatou o erro. Em geral, um registro de erro é análogo a um registro de evento de um log de eventos do Windows. O FQID é análogo à seguinte tupla, que identifica a classe do registro de evento: (nome do log, de origem , ID do evento).
O FQID foi projetado para ser inspecionado como uma única string. No entanto, existem casos em que o identificador de erro é projetado para ser analisado pelo aplicativo host. O exemplo a seguir é um identificador de erro totalmente qualificado bem formado.
CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.
No exemplo anterior, o primeiro token é o identificador de erro, que é seguido pelo nome da classe do cmdlet. O identificador de erro pode ser um único token ou pode ser um identificador separado por pontos que permite a ramificação na inspeção do identificador. Não use espaço em branco ou pontuação no identificador de erro. É especialmente importante não usar vírgula; uma vírgula é usada pelo Windows PowerShell para separar o identificador e o nome da classe do cmdlet.
Outras informações
O objeto System.Management.Automation.ErrorRecord também pode fornecer informações que descrevem o ambiente no qual o erro ocorreu. Essas informações incluem itens como detalhes do erro, informações de invocação e o objeto de destino que estava sendo processado quando o erro ocorreu. Embora essas informações possam ser úteis para o aplicativo host, normalmente não são usadas para identificar o erro. Esta informação está disponível através das seguintes propriedades: