Tolka ErrorRecord-objektInterpreting ErrorRecord Objects

I de flesta fall representerar ett system. Management. Automation. ErrorRecord -objekt ett icke-avslutande fel som genereras av ett kommando eller skript.In most cases, an System.Management.Automation.ErrorRecord object represents a non-terminating error generated by a command or script. Om du avslutar fel kan du också ange ytterligare information i en ErrorRecord via gränssnittet system. Management. Automation. Icontainserrorrecord .Terminating errors can also specify the additional information in an ErrorRecord via the System.Management.Automation.Icontainserrorrecord interface.

Om du vill skriva en fel hanterare i skriptet eller en värd för att hantera vissa fel som inträffar under kommando-eller skript körningen måste du tolka objektet system. Management. Automation. ErrorRecord för att avgöra om det representerar den klass av fel som du vill hantera.If you want to write an error handler in your script or a host to handle specific errors that occur during command or script execution, you must interpret the System.Management.Automation.ErrorRecord object to determine whether it represents the class of error that you want to handle.

När en cmdlet påträffar ett avslutande eller icke-avslutande fel, ska den skapa en fel post som beskriver fel tillståndet.When a cmdlet encounters a terminating or non-terminating error, it should create an error record that describes the error condition. Värd programmet måste undersöka dessa fel poster och utföra de åtgärder som gör att felet minimeras.The host application must investigate these error records and perform whatever action will mitigate the error. Värd programmet måste också undersöka fel poster för fel som inte kan bearbeta en post, men som kan fortsätta, och det måste undersöka fel poster för att avsluta fel som orsakade att pipelinen stoppades.The host application must also investigate error records for nonterminating errors that failed to process a record but were able to continue, and it must investigate error records for terminating errors that caused the pipeline to stop.

Anteckning

För att avbryta fel anropar cmdleten metoden system. Management. Automation. cmdlet. Throwterminatingerror * .For terminating errors, the cmdlet calls the System.Management.Automation.Cmdlet.Throwterminatingerror* method. För icke-avslutande fel anropar cmdleten metoden system. Management. Automation. cmdlet. WriteError .For non-terminating errors, the cmdlet calls the System.Management.Automation.Cmdlet.WriteError method.

Fel vid post designError Record Design

Fel poster är utformade för att ge ytterligare fel information som inte är tillgänglig i undantags syfte och som säkerställer att den kombinerade informationen i varje fel post är unik.Error records are designed to provide additional error information that is not available in exceptions while ensuring that the combined information in each error record is unique. Den här unikheten gör att värd programmet kan kontrol lera de olika delarna av fel posten så att de kan identifiera fel tillståndet och den åtgärd som måste vidtas av värden.This uniqueness allows the host application to inspect the different parts of the error record so that it can identify the error condition and the action the host must take.

Tolka fel posterInterpreting Error Records

Du kan granska flera delar av fel posten för att identifiera felet.You can review several parts of the error record to identify the error. Dessa delar innehåller följande:These parts include the following:

  • Fel kategorinThe error category

  • Fel undantagetThe error exception

  • Den fullständigt kvalificerade fel identifieraren (FQID)The fully qualified error identifier (FQID)

  • Annan informationOther information

Fel kategorinThe Error Category

Fel kategorin för fel posten är en av de fördefinierade konstanterna som tillhandahålls av uppräkningen system. Management. Automation. Errorcategory .The error category of the error record is one of the predefined constants provided by the System.Management.Automation.Errorcategory enumeration. Den här informationen är tillgänglig via egenskapen system. Management. Automation. ErrorRecord. CategoryInfo för objektet system. Management. Automation. ErrorRecord .This information is available through the System.Management.Automation.ErrorRecord.CategoryInfo property of the System.Management.Automation.ErrorRecord object.

Cmdleten kan ange CloseError-, OpenError-, InvalidType-, ReadError-och WriteError-kategorierna och andra fel kategorier.The cmdlet can specify the CloseError, OpenError, InvalidType, ReadError, and WriteError categories, and other error categories. Värd programmet kan använda fel kategorin för att avbilda grupper av fel.The host application can use the error category to capture groups of errors.

UndantagetThe Exception

Undantaget som ingår i fel posten tillhandahålls av cmdleten och kan nås via egenskapen system. Management. Automation. ErrorRecord. Exception * för objektet system. Management. Automation. ErrorRecord .The exception included in the error record is provided by the cmdlet and can be accessed through the System.Management.Automation.ErrorRecord.Exception* property of the System.Management.Automation.ErrorRecord object.

Värd program kan använda is nyckelordet för att identifiera att undantaget är en speciell klass eller en härledd klass.Host applications can use the is keyword to identify that the exception is of a specific class or of a derived class. Det är bättre att förgrena över undantags typen, som visas i följande exempel.It is better to branch on the exception type, as shown in the following example.

if (MyNonTerminatingError.Exception is AccessDeniedException)

På så sätt fångar du de härledda klasserna.This way, you catch the derived classes. Det finns dock problem om undantaget avserialiseras.However, there are problems if the exception is deserialized.

FQIDThe FQID

FQID är den mest detaljerade information som du kan använda för att identifiera felet.The FQID is the most specific information you can use to identify the error. Det är en sträng som innehåller en cmdlet-definierad identifierare, namnet på cmdlet-klassen och källan som rapporterade felet.It is a string that includes a cmdlet-defined identifier, the name of the cmdlet class, and the source that reported the error. I allmänhet är en fel post analog till en händelse post i en händelse logg i Windows.In general, an error record is analogous to an event record of a Windows Event log. FQID är detsamma som i följande tupel, som identifierar klassen för händelse posten: (logg namn, källa, händelse-ID).The FQID is analogous to the following tuple, which identifies the class of the event record: (log name, source, event ID).

FQID är utformad för att kontrol leras som en enskild sträng.The FQID is designed to be inspected as a single string. Det finns dock fall där fel identifieraren är utformad för att kunna parsas av värd programmet.However, cases exist in which the error identifier is designed to be parsed by the host application. Följande exempel är ett välformulerat fullständigt fel-ID.The following example is a well-formed fully qualified error identifier.

CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.

I föregående exempel är den första token fel identifieraren, som följs av namnet på cmdlet-klassen.In the previous example, the first token is the error identifier, which is followed by the name of the cmdlet class. Fel identifieraren kan vara en enskild token, eller så kan den vara en punktavgränsad identifierare som gör det möjligt att kontrol lera identifieringen av identifieraren.The error identifier can be a single token, or it can be a dot-separated identifier that allows for branching on inspection of the identifier. Använd inte blank steg eller interpunktion i fel identifieraren.Do not use white space or punctuation in the error identifier. Det är särskilt viktigt att inte använda ett kommatecken. ett kommatecken används av Windows PowerShell för att avgränsa identifieraren och cmdlet-klassens namn.It is especially important not to use a comma; a comma is used by Windows PowerShell to separate the identifier and the cmdlet class name.

Övrig informationOther Information

Objektet system. Management. Automation. ErrorRecord kan också innehålla information som beskriver miljön där felet uppstod.The System.Management.Automation.ErrorRecord object might also provide information that describes the environment in which the error occurred. Den här informationen omfattar objekt som fel information, information om anrop och det mål objekt som bearbetades när felet uppstod.This information includes items such as error details, invocation information, and the target object that was being processed when the error occurred. Även om den här informationen kan vara användbar för värd programmet, används vanligt vis inte för att identifiera felet.Although this information might be useful to the host application, it is not typically used to identify the error. Den här informationen är tillgänglig via följande egenskaper:This information is available through the following properties:

System. Management. Automation. ErrorRecord. ErrorDetailsSystem.Management.Automation.ErrorRecord.ErrorDetails

System. Management. Automation. ErrorRecord. InvocationInfoSystem.Management.Automation.ErrorRecord.InvocationInfo

System. Management. Automation. ErrorRecord. TargetObjectSystem.Management.Automation.ErrorRecord.TargetObject

Se ävenSee Also

System. Management. Automation. ErrorRecordSystem.Management.Automation.ErrorRecord

System. Management. Automation. ErrorcategorySystem.Management.Automation.Errorcategory

System. Management. Automation. ErrorcategoryinfoSystem.Management.Automation.Errorcategoryinfo

System. Management. Automation. cmdlet. WriteErrorSystem.Management.Automation.Cmdlet.WriteError

System. Management. Automation. cmdlet. Throwterminatingerror *System.Management.Automation.Cmdlet.Throwterminatingerror*

Lägga till rapportering av fel som avbryter körningen i en cmdletAdding Non-Terminating Error Reporting to Your Cmdlet

Windows PowerShell-felrapporteringWindows PowerShell Error Reporting

Skriva en Windows PowerShell-cmdletWriting a Windows PowerShell Cmdlet