ErrorRecord-objecten interpreteren

In de meeste gevallen vertegenwoordigt een System.Management.Automation.ErrorRecord-object een niet-beëindigingsfout die wordt gegenereerd door een opdracht of script. Bij het beëindigen van fouten kan ook de aanvullende informatie in een ErrorRecord worden opgegeven via de interface System.Management.Automation.Icontainserrorrecord.

Als u een fout-handler wilt schrijven in uw script of een host voor het afhandelen van specifieke fouten die optreden tijdens het uitvoeren van de opdracht of het uitvoeren van het script, moet u het object System.Management.Automation.ErrorRecord interpreteren om te bepalen of het de klasse van de fout vertegenwoordigt die u wilt afhandelen.

Wanneer een cmdlet een beëindigings- of niet-beëindigingsfout tegenkomt, moet er een foutrecord worden gemaakt waarin de foutvoorwaarde wordt beschreven. De hosttoepassing moet deze foutrecords onderzoeken en de actie uitvoeren om de fout te verhelpen. De hosttoepassing moet ook foutrecords onderzoeken op niet-beëindigingsfouten die een record niet konden verwerken, maar wel konden doorgaan en moeten foutrecords onderzoeken op beëindigingsfouten waardoor de pijplijn is gestopt.

Notitie

Voor het beëindigen van fouten roept de cmdlet de methode System.Management.Automation.Cmdlet.Throwterminatingerror* aan. Voor niet-beëindigingsfouten roept de cmdlet de methode System.Management.Automation.Cmdlet.WriteError aan.

Ontwerp van foutrecord

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

Foutrecords interpreteren

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

  • De foutcategorie

  • De fout-uitzondering

  • De volledig gekwalificeerde fout-id (FQID)

  • 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-semanier. 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 in de foutrecord is opgenomen, wordt geleverd door de cmdlet en is toegankelijk via de eigenschap System.Management.Automation.ErrorRecord.Exception* van het object System.Management.Automation.ErrorRecord.

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

if (MyNonTerminatingError.Exception is AccessDeniedException)

Op deze manier kunt u de afgeleide klassen ondervangen. 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 die een door de cmdlet gedefinieerde id, de naam van de cmdlet-klasse en de bron bevat 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, waarmee de klasse van de gebeurtenisrecord wordt geïdentificeerd: (logboeknaam , bron , gebeurtenis-id).

De FQID is ontworpen om te worden geïnspecteerd als één tekenreeks. Er zijn echter gevallen waarin de fout-id is ontworpen om te worden geparseerd door de hosttoepassing. Het volgende voorbeeld is een goed gevormde 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 punten gescheiden id waarmee vertakkingen kunnen worden uitgevoerd bij inspectie van de id. Gebruik geen witruimte of leestekens in de fout-id. Het is vooral belangrijk om geen komma te gebruiken; een komma wordt gebruikt door Windows PowerShell om de id en de naam van de cmdlet-klasse te scheiden.

Andere informatie

Het object System.Management.Automation.ErrorRecord biedt 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 zich voordeed. Hoewel deze informatie nuttig kan zijn voor de hosttoepassing, wordt deze doorgaans niet gebruikt om de fout te identificeren. Deze informatie is beschikbaar via de volgende eigenschappen:

System.Management.Automation.ErrorRecord.ErrorDetails

System.Management.Automation.ErrorRecord.InvocationInfo

System.Management.Automation.ErrorRecord.TargetObject

Zie ook

System.Management.Automation.ErrorRecord

System.Management.Automation.Errorcategory

System.Management.Automation.Errorcategoryinfo

System.Management.Automation.Cmdlet.WriteError

System.Management.Automation.Cmdlet.Throwterminatingerror*

Rapportage aan uw cmdlet toevoegen voor fouten die niet leiden tot de beëindiging van een functie of bewerking

Windows PowerShell-foutrapportage

Een Windows PowerShell-cmdlet schrijven