Une erreur dans un script PowerShell l’empêchera de se terminer avec succès. L’utilisation de la gestion des erreurs avec les blocs try catch permet de gérer et de répondre à ces erreurs de terminaison. Dans cet article, je vais couvrir les bases des blocs try/catch et comment trouver et gérer des messages d’exception spécifiques.

comprendre la syntaxe

la syntaxe try catch block est très simple., Il est composé de deux sections entre accolades, la première étant identifiée comme le bloc try et la seconde comme le bloc catch.

try { # Statement to try}catch { # What to do with terminating errors}

le bloc try peut contenir autant d’instructions que je veux; cependant, je recommanderais de le garder aussi peu que possible, probablement juste une seule instruction. Le point de gestion des erreurs est de travailler avec une instruction à la fois et de gérer tout ce qui se produit avec elle.

Voici un exemple d’une erreur survenant dans la console PowerShell., Ici, je crée un nouveau fichier en utilisant L’applet de commande New-Item et en spécifiant un dossier inexistant pour Path:

Si cela était dans un script, la sortie à l’écran gaspillerait de l’espace et le le problème peut ne pas être immédiatement visible. En utilisant un bloc try catch, je peux commencer à manipuler la sortie d’erreur et la rendre plus conviviale pour l’administration.

Voici notre Nouvel Élément de commande dans un bloc try catch. Notez qu’à la ligne 2, j’ai dû ajouter le paramètre ErrorAction avec une valeur de Stop à la commande., Toutes les erreurs ne sont pas considérées comme « terminantes”, donc parfois je dois ajouter ce bit de code afin de terminer correctement dans le bloc catch.

Maintenant, au lieu d’un bloc de rouge de la colère-la recherche de texte, j’ai un simple message d’avertissement qu’il a couru dans un problème. Le nom de chemin inexistant avec forcing-ErrorAction Stop supprime la logique dans le bloc catch et affiche mon avertissement personnalisé.

utiliser la Variable Error Error

bien que plus lisible, ce n’est pas très utile., Tout ce que je sais, c’est que la commande ne s’est pas terminée avec succès mais je ne sais pas pourquoi. Au lieu d’Afficher mon message personnalisé, je peux afficher le message d’erreur spécifique qui s’est produit au lieu du bloc d’exception de texte rouge entier. Lorsqu’une erreur se produit dans le bloc try, elle est enregistrée dans la variable nommée Error Error. La variable Error Error contient un tableau d’erreurs récentes, et je peux référencer l’erreur la plus récente dans le tableau à l’index 0.,

L’avertissement de sortie est désormais plus descriptive indiquant que la commande a échoué parce qu’il ne pouvait pas trouver une partie du chemin. Ce message faisait partie de notre message d’erreur d’origine, mais il est maintenant plus concis.

en utilisant des Messages D’Exception

je peux également utiliser plusieurs blocs de capture au cas où je voudrais gérer différemment des erreurs spécifiques. Ici, je vais afficher deux messages personnalisés, un pour si le chemin d’accès n’existe pas et un pour si un caractère illégal est utilisé dans le nom., Notez que dans la capture d’écran suivante, j’ai exécuté le script deux fois avec deux commandes différentes dans le bloc try. Chaque commande, bloc de capture et sortie finale sont indiqués par les flèches orange et verte.

en Regardant les lignes 14-16, il existe un troisième bloc catch sans un message d’exception. Il s’agit d’un bloc catch” fourre-tout  » qui s’exécutera si l’erreur ne correspond à aucune autre exception de bloc catch., Si j’exécute ce script et que je vois le message dans le dernier bloc catch, je sais que l’erreur n’est pas liée à un caractère illégal dans le nom du fichier ou à une partie du chemin qui n’est pas valide.

maintenant, comment ai-je connu les messages d’exception à utiliser dans les deux premiers blocs de capture? Cela peut être trouvé en regardant les différentes informations attachées à la variable Error Error. Après qu’une commande ait échoué, je peux exécuter Error Error.Exception.GetType ().FullName pour afficher le message d’exception pour la dernière erreur survenue.,

en revenant à la console PowerShell, j’ai Relan la commande New-Item avec un chemin inexistant, puis j’ai exécuté ma commande Error Error pour trouver le message d’exception.

le texte rouge immédiatement après l’échec de la commande contient également le message d’exception mais ne contient pas de quel module il provient. Regarder la variable Error Error affiche le message complet à utiliser pour un bloc catch.,

L’utilisation de blocs try / catch donne une puissance supplémentaire pour gérer les erreurs dans un script et prendre différentes actions en fonction de l’erreur. Le bloc catch peut afficher plus qu’un simple message d’erreur. Il peut contenir une logique qui résoudra l’erreur et continuera à exécuter le reste du script.