Tolka ErrorRecord-objekt

I de flesta fall representerar ett System.Management.Automation.ErrorRecord-objekt ett icke-avslutande fel som genereras av ett kommando eller skript. Avslutande fel kan också ange ytterligare information i ett ErrorRecord via gränssnittet System.Management.Automation.Icontainserrorrecord.

Om du vill skriva en felhanterare i skriptet eller en värd för att hantera specifika fel som inträffar under kommando- eller skriptkörningen, måste du tolka objektet System.Management.Automation.ErrorRecord för att avgöra om det representerar den felklass som du vill hantera.

När en cmdlet påträffar ett avslutande eller icke-avslutande fel bör den skapa en felpost som beskriver feltillståndet. Värdprogrammet måste undersöka dessa felposter och utföra den åtgärd som ska åtgärda felet. Värdprogrammet måste också undersöka felposter för att hitta obestämda fel som inte kunde bearbeta en post men som kunde fortsätta, och det måste undersöka felposter för att hitta avslutande fel som gjorde att pipelinen stoppades.

Anteckning

Vid avslutande fel anropar cmdleten metoden System.Management.Automation.Cmdlet.Throwterminatingerror*. För icke-avslutande fel anropar cmdleten metoden System.Management.Automation.Cmdlet.WriteError.

Design av felpost

Felposter är utformade för att ge ytterligare felinformation som inte är tillgänglig i undantag, samtidigt som den kombinerade informationen i varje felpost är unik. Den här unikheten gör att värdprogrammet kan inspektera de olika delarna av felposten så att det kan identifiera feltillståndet och den åtgärd som värden måste vidta.

Tolka felposter

Du kan granska flera delar av felposten för att identifiera felet. Dessa delar omfattar följande:

  • Felkategorin

  • Felfelet

  • Den fullständigt kvalificerade felidentifieraren (FQID)

  • Annan information

Felkategorin

Felkategorin för felposten är en av de fördefinierade konstanter som tillhandahålls av uppräkningen System.Management.Automation.Errorcategory. Den här informationen är tillgänglig via egenskapen System.Management.Automation.ErrorRecord.CategoryInfo för objektet System.Management.Automation.ErrorRecord.

Cmdleten kan ange kategorierna CloseError, OpenError, InvalidType, ReadError och WriteError och andra felkategorier. Värdprogrammet kan använda felkategorin för att samla in grupper av fel.

Undantaget

Undantaget som ingår i felposten tillhandahålls av cmdleten och kan nås via egenskapen System.Management.Automation.ErrorRecord.Exception* för objektet System.Management.Automation.ErrorRecord.

Värdprogram kan använda is nyckelordet för att identifiera att undantaget gäller en specifik klass eller en härledd klass. Det är bättre att förgrena på undantagstypen, som du ser i följande exempel.

if (MyNonTerminatingError.Exception is AccessDeniedException)

På så sätt fångar du de härledda klasserna. Det finns dock problem om undantaget deserialiseras.

The FQID

FQID är den mest specifika information som du kan använda för att identifiera felet. Det är en sträng som innehåller en cmdlet-definierad identifierare, namnet på cmdlet-klassen och källan som rapporterade felet. I allmänhet motsvarar en felpost en händelsepost i en Windows händelselogg. FQID motsvarar följande tuppel, som identifierar klassen för händelseposten: (loggnamn, källa, händelse-ID).

FQID är utformat för att inspekteras som en enda sträng. Det finns dock fall där felidentifieraren är avsedd att parsas av värdprogrammet. Följande exempel är en väl utformad fullständigt kvalificerad felidentifierare.

CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.

I föregående exempel är den första token felidentifieraren, som följs av namnet på cmdlet-klassen. Felidentifieraren kan vara en enda token eller en punktavgränsad identifierare som gör det möjligt att förgrena vid granskning av identifieraren. Använd inte blanksteg eller skiljetecken i felidentifieraren. 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-klassnamnet.

Övrig information

Objektet System.Management.Automation.ErrorRecord kan också ge information som beskriver miljön där felet inträffade. Den här informationen omfattar objekt som felinformation, anropsinformation och målobjektet som bearbetades när felet inträffade. Även om den här informationen kan vara användbar för värdprogrammet används den vanligtvis inte för att identifiera felet. Den här informationen är tillgänglig via följande egenskaper:

System.Management.Automation.ErrorRecord.ErrorDetails

System.Management.Automation.ErrorRecord.InvocationInfo

System.Management.Automation.ErrorRecord.TargetObject

Se även

System.Management.Automation.ErrorRecord

System.Management.Automation.Errorcategory

System.Management.Automation.Errorcategoryinfo

System.Management.Automation.Cmdlet.WriteError

System.Management.Automation.Cmdlet.Throwterminatingerror*

Lägga till rapportering av fel som avbryter körningen i en cmdlet

Windows PowerShell-felrapportering

Skriva en Windows PowerShell-cmdlet