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
Feedback
Skicka och visa feedback för