Comment utiliser Try-Catch dans PowerShell

Comment utiliser Try-Catch dans PowerShell
les erreurs sont déroutants et stressants pour tous les utilisateurs d'ordinateurs; Ils sont souvent difficiles à lire, vous faisant vous demander où le script a mal tourné. Il est également possible qu'un script exécuté une fois ne s'exécutera plus. Il peut y avoir un problème qui se pose lorsque vous vous attendez le moins. C'est pourquoi vous devriez inclure la gestion des erreurs dans chaque Script PowerShell vous écrivez.

PowerShell a d'excellentes options pour gérer les erreurs. Même dans le script le plus simple, il peut gérer les erreurs tout en veillant à ce qu'un événement inattendu ne provoque pas un crash système. En implémentant le concept de gestion des erreurs, les erreurs peuvent être filtrées et montrées pour les rendre plus faciles à comprendre, ajoutant une logique supplémentaire au processus de gestion des erreurs. Essayez de prendre des blocs sont utilisés pour gérer ou répondre aux erreurs de terminaison dans les scripts PowerShell.

Qu'est-ce qu'un bloc d'essai à PowerShell

Nous répondrons à cette question dans cette section:

UN "Essayez le bloc est utilisé pour spécifier une partie d'un script où PowerShell devrait rechercher des problèmes. Le $ Erreur La variable automatique stocke d'abord l'erreur en soi lorsque le bloc d'essai rencontre une erreur. Après cela, PowerShell cherche un bloc de capture pour gérer l'erreur. PowerShell recherche au parent élargit un bloc de capture approprié si le «essayer»La déclaration n'a pas de bloc de capture apparié. Le "enfin”Le bloc est exécuté après le bloc de capture, ou si aucun bloc de capture approprié n'a été trouvé. L'erreur est écrite dans le flux d'erreur s'il ne peut pas être géré.

UN "Catch »Block comprend les commandes pour surveiller l'erreur ou restaurer le flux attendu du script. Les types d'erreurs qu'un bloc de capture attrapera peut être spécifié. Différents types d'erreurs sont inclus dans une instruction TRY, et plusieurs blocs de capture sont ensuite utilisés pour gérer ces erreurs.

UN Bloc «enfin» est utilisé pour libérer ou libérer les ressources que votre script ne nécessite plus.

Syntaxe de l'essai et enfin dans PowerShell

Une déclaration d'essai est composée d'un bloc d'essai, avec un ou plusieurs blocs de «capture» et «enfin». Vous devriez avoir au moins un bloc «capture» ou «enfin» à chaque instruction TRYS dans votre script. Une liste d'instructions enfermée entre parenthèses suit le mot-clé try.

essayer

Le script envoie l'objet d'erreur du bloc d'essai à son bloc de capture apparié si une erreur de terminaison se produit pendant que les instructions de la liste des instructions s'exécutent. Les types d'erreur sont placés entre les supports, et les supports les plus externes indiquent l'optionnalité de l'élément.

Le bloc Catch a une liste de relevés et une liste facultative pour les définitions de type d'erreur. PowerShell recherche le bloc de capture approprié si une erreur de terminaison se produit dans le bloc d'essai. Dans le cas où le bloc d'essai apparié est trouvé, le programme exécutera les instructions de bloc de capture.

attraper [[] [',' ] *]

Vous pouvez spécifier un ou plusieurs types d'erreurs dans le bloc de capture. Ces erreurs sont les .Exception nette. Un bloc de capture fonctionne avec des exceptions du .Classe d'exception Net Framework et autres classes dérivées.

Si un type d'erreur est spécifié dans un bloc de capture, il est de la responsabilité du même bloc de capture de gérer cette erreur. Si un type d'erreur n'est pas défini dans le bloc de capture, il gérera toute erreur que le bloc d'essayer rencontre. Une déclaration d'essai peut avoir de nombreux blocs de capture pour gérer divers types d'erreur. Le mot clé enfin comprend une liste d'instructions qui s'exécute chaque fois que le script est exécuté, que le bloc d'essai s'exécute sans erreur ou si une erreur existe dans une instruction Catch.

enfin

Exécution de coups d'essai unique dans le script PowerShell

Maintenant, nous allons consulter la mise en œuvre pratique de la méthode de couple d'essai. Tout d'abord, ouvrez votre Windows PowerShell Ise et créer un nouveau fichier:

Écrivez le code suivant dans ce fichier et enregistrez ce script PowerShell nommé "TestFile2.PS1» vous pouvez le nommer comme vous le souhaitez.

Essayez non-sens
Catch "Une erreur s'est produite."

PowerShell ne reconnaît pas le «désendestring» comme n'importe quel objet ou commande, donc l'instruction Catch sera exécutée après l'exécution du script:

Exécution de plusieurs coups d'essai dans PowerShell

N'importe quel nombre de blocs de capture peut être utilisé avec une instruction TRY. Dans l'exemple ci-dessous, nous avons ajouté un bloc d'essai qui télécharge "Mydoc.doc»Et a deux blocs de capture:

Le premier bloc de capture traitera avec Système.Io.Ioexception et Système.Filet.Conception Web sortes d'erreurs. Le type d'erreur dans le deuxième bloc de capture n'est pas fourni. Ce bloc est également responsable de la gestion des autres erreurs de terminaison.

essayer
$ wc = système de nouveaux objets.Filet.Webclient
$ wc.DownloadFile ("http: // www.contoso.com / mydoc.doc "," e: \ download \ testfile.doc ")
Write-Host «Le fichier a téléchargé avec succès !"

attraper [système.Filet.WebException], [Système.Io.IoException]
"Impossible de télécharger MyDoc.doc de http: // www.contoso.com."

attraper
"Une erreur s'est produite qui n'a pas pu être résolue."

Enregistrer le code et l'exécuter.

La sortie déclare que le «Mydoc.doc"Le fichier est téléchargé avec succès dans le"E: \ Télécharger " dossier:

Pour vérifier l'existence du nouvellement téléchargé «Mydoc.doc«Fichier, nous utiliserons le«Get-Childitem" commande. Cette commande extrait tous les éléments enfants du «E: \ Télécharger" dossier:

> Get-ChildItem «E: \ Télécharger»

PowerShell utilise l'héritage pour faire correspondre les types d'erreur. Un bloc de capture est utilisé dans l'exemple ci-dessous pour attraper un «Commande non trouvée" erreur:

attraper [système.Gestion.Automatisation.CommandNotFoundException]
"Exception héritée"

Ici, nous avons l'exception.

Extraire des informations d'exception dans PowerShell

L'erreur actuelle peut être obtenue via $ _, aussi connu sous le nom $ Psitem, Dans un bloc de capture. L'objet est du «Type d'errorRecord,»Et il contient des informations sur l'erreur rencontrée.

Essayez non-sens
attraper
Écriture-hôte "Une erreur s'est produite:"
Écriture-host $ _

Voilà!

Conclusion

Les blocs de couple d'essai PowerShell vous permettent de gérer les problèmes de script et d'effectuer diverses opérations en fonction des erreurs rencontrées. Non seulement le message d'erreur peut être affiché dans le bloc de capture, mais il peut également inclure la logique pour gérer l'erreur et continuer à exécuter le script restant.

Dans cet article, nous vous avons fourni différentes méthodes de Utilisation de Try-Catch dans PowerShell. Ces méthodes incluent l'exécution de coups d'essai unique, de plusieurs instructions de capture d'essai et d'extraction des informations d'exception dans PowerShell.