ErrorRecord-objecten interpreteren

In de meeste gevallen vertegenwoordigt een System.Management.Automation.ErrorRecord object een niet-afsluitfout die wordt gegenereerd door een opdracht of script. Afsluitfouten kunnen ook de aanvullende informatie in een ErrorRecord opgeven via de System.Management.Automation.IContainsErrorRecord interface.

Als u een fouthandler in uw script of een host wilt schrijven om specifieke fouten te verwerken die optreden tijdens het uitvoeren van opdrachten of scripts, moet u de System.Management.Automation.ErrorRecord object interpreteren om te bepalen of het de klasse van de fout vertegenwoordigt die u wilt verwerken.

Wanneer een cmdlet een afsluit- of niet-afsluitfout tegenkomt, moet er een foutrecord worden gemaakt waarin de foutvoorwaarde wordt beschreven. De hosttoepassing moet deze foutrecords onderzoeken en elke actie uitvoeren om de fout te verhelpen. De hosttoepassing moet ook foutrecords onderzoeken voor niet-afsluitfouten die een record niet hebben verwerkt, maar die wel konden worden voortgezet, en moet foutrecords onderzoeken voor afsluitfouten waardoor de pijplijn is gestopt.

Notitie

Voor afsluitfouten roept de cmdlet de methode System.Management.Automation.Cmdlet.ThrowTerminatingError aan. Voor niet-afsluitfouten roept de cmdlet de methode System.Management.Automation.Cmdlet.WriteError aan.

Foutrecordontwerp

Foutrecords zijn ontworpen om aanvullende foutinformatie te bieden die niet beschikbaar is in uitzonderingen, terwijl u ervoor zorgt dat de gecombineerde informatie in elke foutrecord uniek is. Met deze uniekheid kan de hosttoepassing de verschillende onderdelen van de foutrecord inspecteren, zodat deze de foutvoorwaarde kan identificeren en de actie die de host moet uitvoeren.

Foutrecords interpreteren

U kunt verschillende onderdelen van de foutrecord bekijken om de fout te identificeren. Deze onderdelen omvatten het volgende:

  • De foutcategorie

  • De fout-uitzondering

  • De FQID (Fully Qualified Error Identifier)

  • Overige informatie

De foutcategorie

De foutcategorie van de foutrecord is een van de vooraf gedefinieerde constanten die worden geleverd door de System.Management.Automation.ErrorCategory opsomming. Deze informatie is beschikbaar via de eigenschap System.Management.Automation.ErrorRecord.CategoryInfo van het object System.Management.Automation.ErrorRecord.

De cmdlet kan de categorieën CloseError, OpenError, InvalidType, ReadError en WriteError en andere foutcategorieën opgeven. De hosttoepassing kan de foutcategorie gebruiken om groepen fouten vast te leggen.

De uitzondering

De uitzondering die is opgenomen in de foutrecord wordt geleverd door de cmdlet en kan worden geopend via de eigenschap System.Management.Automation.ErrorRecord.Exception van het System.Management.Automation.ErrorRecord-object.

Hosttoepassingen kunnen het is trefwoord gebruiken om te bepalen dat de uitzondering van een specifieke klasse of van een afgeleide klasse is. Het is beter om te vertakken op het uitzonderingstype, zoals wordt weergegeven in het volgende voorbeeld.

`if (MyNonTerminatingError.Exception is AccessDeniedException)`
{
  ...
}

Op deze manier haalt u de afgeleide klassen op. Er zijn echter problemen als de uitzondering wordt gedeserialiseerd.

De FQID

De FQID is de meest specifieke informatie die u kunt gebruiken om de fout te identificeren. Het is een tekenreeks met een door cmdlet gedefinieerde id, de naam van de cmdlet-klasse en de bron die de fout heeft gerapporteerd. Over het algemeen is een foutrecord vergelijkbaar met een gebeurtenisrecord van een Windows-gebeurtenislogboek. De FQID is vergelijkbaar met de volgende tuple, die de klasse van de gebeurtenisrecord identificeert: (logboeknaam, bron, gebeurtenis-id).

De FQID is ontworpen om te worden geïnspecteerd als één tekenreeks. Er bestaan echter gevallen waarin de fout-id is ontworpen om te worden geparseerd door de hosttoepassing. Het volgende voorbeeld is een goed opgemaakte volledig gekwalificeerde fout-id.

CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.

In het vorige voorbeeld is het eerste token de fout-id, gevolgd door de naam van de cmdlet-klasse. De fout-id kan één token zijn of een door punt gescheiden id waarmee vertakkingen kunnen worden uitgevoerd bij inspectie van de id. Gebruik geen spatie of interpunctie in de fout-id. Het is vooral belangrijk om geen komma te gebruiken; Een komma wordt door Windows PowerShell gebruikt om de id en de naam van de cmdlet-klasse te scheiden.

Overige informatie

Het object System.Management.Automation.ErrorRecord bevat mogelijk ook informatie over de omgeving waarin de fout is opgetreden. Deze informatie bevat items zoals foutdetails, aanroepgegevens en het doelobject dat werd verwerkt toen de fout optrad. Hoewel deze informatie nuttig kan zijn voor de hosttoepassing, wordt deze meestal niet gebruikt om de fout te identificeren. Deze informatie is beschikbaar via de volgende eigenschappen:

Zie ook