Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nella maggior parte dei casi, un oggetto System.Management.Automation.ErrorRecord rappresenta un errore non irreversibile generato da un comando o uno script. Gli errori di terminazione possono anche specificare le informazioni aggiuntive in un errorRecord tramite l'interfaccia System.Management.Automation.IContainsErrorRecord.
Se si desidera scrivere un gestore errori nello script o in un host per gestire errori specifici che si verificano durante l'esecuzione di comandi o script, è necessario interpretare l'oggetto System.Management.Automation.ErrorRecord per determinare se rappresenta la classe di errore che si desidera gestire.
Quando un cmdlet rileva un errore irreversibile o non irreversibile, deve creare un record di errore che descrive la condizione di errore. L'applicazione host deve analizzare questi record di errore ed eseguire qualsiasi azione mitiga l'errore. L'applicazione host deve anche analizzare i record degli errori per gli errori non irreversibili che non sono riusciti a elaborare un record, ma sono stati in grado di continuare e devono analizzare i record degli errori per individuare gli errori irreversibili che hanno causato l'arresto della pipeline.
Nota
Per gli errori di terminazione, il cmdlet chiama il metodo System.Management.Automation.Cmdlet.ThrowTerminatingError. Per gli errori non irreversibili, il cmdlet chiama il metodo System.Management.Automation.Cmdlet.WriteError.
Progettazione dei record di errore
I record di errore sono progettati per fornire informazioni aggiuntive sugli errori non disponibili nelle eccezioni, assicurando al tempo stesso che le informazioni combinate in ogni record di errore siano univoche. Questa univocità consente all'applicazione host di esaminare le diverse parti del record di errore in modo che possa identificare la condizione di errore e l'azione che l'host deve eseguire.
Interpretazione dei record di errore
È possibile esaminare diverse parti del record di errore per identificare l'errore. Queste parti includono quanto segue:
Categoria di errore
Eccezione di errore
Identificatore di errore completo (FQID)
Altre informazioni
Categoria errore
La categoria di errore del record di errore è una delle costanti predefinite fornite dall'enumerazione System.Management.Automation.ErrorCategory. Queste informazioni sono disponibili tramite la proprietà System.Management.Automation.ErrorRecord.CategoryInfo dell'oggetto System.Management.Automation.ErrorRecord.
Il cmdlet può specificare le categorie CloseError, OpenError, InvalidType, ReadError e WriteError e altre categorie di errore. L'applicazione host può usare la categoria di errore per acquisire gruppi di errori.
Eccezione
L'eccezione inclusa nel record di errore viene fornita dal cmdlet e può essere accessibile tramite la proprietà System.Management.Automation.ErrorRecord.Exception dell'oggetto System.Management.Automation.ErrorRecord.
Le applicazioni host possono usare la parola chiave is per identificare che l'eccezione è di una classe specifica o di una classe derivata. È preferibile creare un ramo sul tipo di eccezione, come illustrato nell'esempio seguente.
`if (MyNonTerminatingError.Exception is AccessDeniedException)`
{
...
}
In questo modo, si intercettano le classi derivate. Tuttavia, si verificano problemi se l'eccezione viene deserializzata.
The FQID
L'FQID è le informazioni più specifiche che è possibile usare per identificare l'errore. Si tratta di una stringa che include un identificatore definito dal cmdlet, il nome della classe del cmdlet e l'origine che ha segnalato l'errore. In generale, un record di errore è analogo a un record eventi di un registro eventi di Windows. L'FQID è analogo alla tupla seguente, che identifica la classe del record dell'evento: (nome del log, origine, ID evento).
L'FQID è progettato per essere esaminato come una singola stringa. Esistono tuttavia casi in cui l'identificatore di errore è progettato per essere analizzato dall'applicazione host. L'esempio seguente è un identificatore di errore completo ben formato.
CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand.
Nell'esempio precedente il primo token è l'identificatore di errore, seguito dal nome della classe del cmdlet. L'identificatore di errore può essere un singolo token oppure può essere un identificatore delimitato da punti che consente la diramazione nell'ispezione dell'identificatore. Non usare spazi vuoti o punteggiatura nell'identificatore di errore. È particolarmente importante non usare una virgola; Una virgola viene usata da Windows PowerShell per separare l'identificatore e il nome della classe del cmdlet.
Altre informazioni
L'oggetto System.Management.Automation.ErrorRecord potrebbe anche fornire informazioni che descrivono l'ambiente in cui si è verificato l'errore. Queste informazioni includono elementi come i dettagli dell'errore, le informazioni sulla chiamata e l'oggetto di destinazione che è stato elaborato quando si è verificato l'errore. Anche se queste informazioni potrebbero essere utili per l'applicazione host, in genere non vengono usate per identificare l'errore. Queste informazioni sono disponibili tramite le proprietà seguenti: