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 System.Management.Automation.ErrorRecord-objektet för att avgöra om det representerar den felklass som du vill hantera.

När en cmdlet stöter på ett avslutande eller icke-avslutande fel bör den skapa en felpost som beskriver felvillkoret. 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 icke-avslutande fel som inte kunde bearbeta en post men som kunde fortsätta, och det måste undersöka felposter för att avsluta fel som orsakade att pipelinen stoppades.

Anmärkning

För att avsluta 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. Med den här unikheten kan värdprogrammet 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

  • Felfelsfelet

  • Den fullständigt kvalificerade felidentifieraren (FQID)

  • Annan information

Felkategorin

Felkategorin för felposten är en av de fördefinierade konstanterna som tillhandahålls av System.Management.Automation.ErrorCategory uppräkning. 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 System.Management.Automation.ErrorRecord-objektet.

Värdprogram kan använda nyckelordet is för att identifiera att undantaget gäller för en specifik klass eller en härledd klass. Det är bättre att förgrena sig 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 tupplar, 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 utformad för att parsas av värdprogrammet. Följande exempel är en välformulerad 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 så kan det vara en punktavgränsad identifierare som möjliggör förgrening vid inspektion av identifieraren. Använd inte blanksteg eller skiljetecken i felidentifieraren. Det är särskilt viktigt att inte använda kommatecken. ett kommatecken används av Windows PowerShell för att separera 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:

Se även