Si vous êtes comme moi, non seulement vous n’avez jamais commis d’erreur dans votre script, mais toutes les forces externes hors de votre contrôle fonctionnent toujours comme prévu… Mettre une petite pause sur le sarcasme, que font les gens sans le toucher magique PowerShell? Ils se lancent dans l’ancienne bataille qui dure depuis des générations appelée gestion des erreurs.

exemple de gestion des erreurs PowerShell

la gestion des erreurs avec PowerShell permet de s’assurer qu’une exception inattendue ne laisse pas un script continuer à causer des problèmes., Jetons un coup d’oeil à un script qui fera en sorte que seules les personnes cool ont accès à tous les trucs cool. (Voir Get-Content)

fonctionne très bien! Cependant, Kris Powell a découvert la liste cool, et en colère d’être laissé hors de la liste, il effectue une action qui prouve que nous avons raison de le garder à l’écart. Il supprime CoolPeople.csv.

la Prochaine fois que le script s’exécute, nous obtenons une exception:

Avec un vide $UpdatedCoolList variable, il supprime tous les accès. Très pas cool Kris.,

Exceptions

avant d’entrer dans la gestion du sabotage, il est important de se renseigner sur les exceptions. Une exception est une erreur ou un résultat inattendu que PowerShell a besoin de vous pour gérer.

Il existe deux types d’exceptions: terminaison et non terminaison. La fin des exceptions arrête le script en cours d’exécution. Les exceptions Non terminantes écrivent simplement dans le pipeline d’erreurs.

faire d’une exception non terminante une exception terminante est simple. Vous pouvez définir le paramètre de la commande sur-ErrorAction pour arrêter.,

$UpdatedCoolList = Get-Content \\FileShare\Location\CoolPeople.csv -ErrorAction Stop

Vous pouvez également définir l’action par défaut de toutes les erreurs d’arrêt en définissant la variable $ErrorActionPreference = "Stop".

dans la plupart des cas, une applet de commande génère une exception non terminante, mais la gestion des erreurs avec PowerShell nécessite une exception terminante pour fonctionner.

Try/Catch/finally

Après le -ErrorAction est réglé sur Stop, on peut l’envelopper dans un bloc Try/Catch., Try est l’endroit où nous exécutons la commande, et Catch est ce qui s’exécutera s’il rencontre une erreur de fin. (Voir Fichier)

Dans ce script à bloc, nous avons capturé l’exception et le mettre dans un fichier journal. Break a été utilisé pour quitter le script afin de ne pas continuer. Si nous avions laissé le bloc catch vide, il absorberait l’erreur et continuerait le script.

Le dernier morceau de la gestion des erreurs avec un Try/Catch/finally est le bloc Finally., Ceci est utilisé pour fournir des actions qui s’exécuteront toujours avant de quitter le script (ou de continuer). Ceci est principalement utilisé pour le nettoyage. Vous pouvez l’utiliser pour fermer des connexions à la base de données, supprimer des fichiers ou fermer des verrous de fichiers. Finally vous permet d’annuler toutes les modifications effectuées à la suite du script, qu’une exception soit rencontrée ou non.

Conclusion

c’est tout pour les bases. Chaque fois que vous avez affaire à des éléments volatils ou hors de votre contrôle, la gestion des erreurs est un excellent moyen de vous assurer que votre script ne causera pas de problèmes si les choses tournent mal.