Gérez les erreurs PowerShell comme un chef avec ces conseils
Comme son nom l’indique, PowerShell est beaucoup plus puissant que l’invite de commande standard de Windows. Avec cette capacité, il y a un plus grand risque d’erreurs de confusion. Si votre script échoue soudainement, vous ne savez peut-être pas par où commencer pour rechercher le problème. C’est là que la gestion des erreurs de PowerShell est utile.
Si vous connaissez d’autres langages, vous connaissez probablement les bases de la gestion des erreurs, mais vous devez connaître certains aspects spécifiques à PowerShell. La gestion des erreurs dans PowerShell comporte quatre parties : paramètres d’action d’erreur, blocs Try/Catch, paramètres de variable d’erreur et journalisation.
Le moyen simple de gérer les erreurs PowerShell
La première étape du traitement des erreurs PowerShell consiste à résoudre le problème qui empêche l’exécution du script. Si l’échec n’affecte pas le reste du script, il est préférable de simplement dire à PowerShell d’ignorer l’erreur et de passer à autre chose.
D’un autre côté, il n’est pas toujours clair quand une applet de commande donnée génère une erreur de terminaison. Certaines applets de commande renvoient des erreurs sans arrêter votre script. Cela peut vous faire attendre que le script se termine lors de la sortie de conneries.
C’est – mauvaise action les paramètres entrent en jeu. Vous l’utilisez pour forcer l’applet de commande à gérer les erreurs comme vous le souhaitez. Si vous souhaitez modifier un script existant, ajoutez-le à la fin de la ligne de l’applet de commande.
Faire une vidéo du jour
Get-ChildItem -Path « ~Documents*.jpg » -Recurse -ErrorAction Arrêt
Evidemment si vous utilisez avoir des enfants L’applet de commande elle-même, cette erreur ne vous fera pas grand-chose. Cependant, si vous voulez faire quoi que ce soit avec les données, il est préférable d’arrêter le script afin que vous sachiez que la recherche a échoué et pourquoi.Ou, si vous effectuez plusieurs recherches, modifiez les paramètres de arrêter arrivée continuer en silence, donc si la recherche échoue, le script continue.Si vous voulez voir quelle est l’erreur, vous pouvez utiliser Continuez comme paramètre.
Get-ChildItem -Path « ~Documents*.jpg » -Recurse -ErrorAction SilentlyContinue
Si vous souhaitez que l’option contrôle ce qui se passe à chaque exécution du script, vous pouvez la remplacer par Renseigner. Lorsque votre applet de commande rencontre un roadblock, elle propose les options suivantes : Oui, Oui, commande d’arrêt, pauseou aider.
Cette option est un peu plus flexible, mais signifie que les erreurs obligeront votre script à attendre votre entrée. C’est bien si vous utilisez PowerShell pour envoyer des e-mails ou une autre tâche simple, mais ce n’est probablement pas ce que vous voulez lorsque vous exécutez un long processus pendant la nuit.
Une approche puissante de la gestion des erreurs PowerShell
Ce mauvaise action paramètres pour résoudre votre erreur de manière simple. Cependant, si vous recherchez plus de contrôle sur les erreurs, PowerShell vous couvre toujours.utiliser essayer d’attrapernous pouvons maintenant brancher le script lorsque l’applet de commande renvoie une erreur.
Comme le nom le suggère, essayer d’attraper Se compose de deux parties. (Techniquement, il y en a un troisième, mais nous y reviendrons dans une minute.) Le premier est essayer partie. Vous exécuterez votre code normal dans cette section.vous utiliserez encore – mauvaise action paramètres, mais ne peut être réglé que sur arrêter. Cet indicateur garantit que votre applet de commande se déclenche attraper— même s’il ne se termine pas par une erreur.
essayer{
Obtenir le processus « Cortana » – ErrorAction arrêté
}
Try peut également empêcher l’exécution d’autres applets de commande si la recherche échoue.Dans ce cas, si vous envoyez obtenir le processus résultat à arrêter le processusune recherche ayant échoué empêche l’exécution de la deuxième applet de commande.
Maintenant que vous avez créé un bloc try pour une applet de commande, que voulez-vous faire en cas d’échec ?utiliser attraper A mi-parcours, vous définissez cela.
attraper{
écrire hôte « processus introuvable »
}
et mauvaise action paramètres, lorsque vous faites quelque chose de plus complexe attraper Il ne s’agit pas seulement de donner de simples échecs linguistiques, en particulier lorsque vous faites quelque chose de plus complexe. (Dans l’exemple ci-dessus, l’échec est forcé en utilisant le nom de l’application au lieu du nom du processus.) Assurez-vous donc d’utiliser essayer block pour créer la recherche/action dont vous avez besoin.tu peux l’utiliser attraper Empêchez votre script de vous envoyer un e-mail en cas d’échec.
La troisième partie est pratique si vous voulez que quelque chose s’exécute, que votre applet de commande réussisse ou non.Pour cela, vous pouvez utiliser finalement bloqué. Vous l’ajoutez après Try and Catch et vous le consignez à la fin d’une partie du script.
Variables d’erreur et journalisation
Votre script contrôle désormais la façon dont il gère les erreurs et comment il y répond. Vous pouvez l’utiliser comme une tâche planifiée, ou au moins l’exécuter lorsque vous n’êtes pas à votre bureau. Mais comment puis-je enquêter sur le script qui a échoué ?de même que – variable d’erreur Écrivez votre paramètre d’erreur d’applet de commande dans une variable personnalisée.
C’est une alternative au système $erreur Variable contenant toutes les erreurs de la session en cours.
Votre applet de commande prend plus de temps.Tout d’abord, définissez une variable comme $erreur de recherche Je le ferai pour l’exemple.quand vous appelez erreur de recherche à l’intérieur Variable d’erreur paramètres, vous n’utilisez pas de signes dollar.
Même si vous appelez une variable que vous avez créée, vous l’appelez sans le signe dollar en raison du fonctionnement des paramètres. Ajoutez-le ensuite à la fin de la ligne.
Get-ChildItem -Path « ~Documents*.jpg » -Recurse -ErrorAction Continue -ErrorVariable SearchError
si vous ajoutez un + Avant le nom de la variable, vous pouvez ajouter la variable au lieu de la remplacer directement. Cela vous donne le même comportement que la variable d’erreur globale.Au lieu de cela, vous pouvez utiliser cette sortie et essayer d’attraper Écrivez une sortie personnalisée et horodatez-la.
Pour que cela fonctionne, créez un fichier texte juste après avoir défini la variable d’erreur.utiliser nouvel article applets de commande.vous voudrez peut-être utiliser Renseigner Choix mauvaise action Portée.Cela vous permet de nouvel article cmdlet a échoué.
$SearchLog = New-Item « ~SearchLog.txt » – type file-ErrorAction query
Maintenant, lorsque vous construisez votre essayer d’attraper bloquer, vous pouvez utiliser attraper Connectez-vous au fichier texte.Tu utilises avoir un rendez-vous Créer un horodatage. Le format peut être délicat, alors assurez-vous de le copier à partir de l’exemple.
essayer{
Get-ChildItem -Path « ~Documents*.jpg » -Recurse -ErrorAction Stop -ErrorVariable SearchError
}
attraper{
Add-Content -Path $SearchLog -Value « $(Get-Date -Format dd-MM-yy-hh_mm_ss) Les fichiers introuvables renvoient l’erreur : $SearchError »
}
Répétez cette opération pour toutes les applets de commande si nécessaire, et vous aurez maintenant un joli journal de toutes les erreurs.Si vous voulez garder une trace des choses qui fonctionnent avec succès, vous pouvez ajouter quelque chose comme ajouter du contenu à la fin essayer bloqué.
Cette journalisation se produit uniquement dans votre essayer cmdlet a réussi. Vous pouvez ensuite utiliser des horodatages pour consigner les erreurs et les réussites. La journalisation vous permet désormais de savoir tout ce que le script a fait, réussi ou échoué.
PowerShell n’est pas votre seule option
Bien que PowerShell soit un outil pratique pour de nombreuses tâches Windows, il peut être difficile à apprendre. Il ne convient pas non plus à tout. PowerShell est pratique si vous effectuez la maintenance du système sur votre ordinateur ou si vous vérifiez l’intégrité des fichiers. D’autre part, si vous souhaitez exécuter un script pour télécharger des fichiers à partir d’Internet ou effectuer des tâches plus générales, vous avez d’autres options.
Par exemple, si vous avez une formation Unix ou Linux, vous préférerez peut-être utiliser le shell bash. Avec le sous-système Windows pour Linux, vous pouvez désormais utiliser facilement bash et d’autres outils Linux sur votre ordinateur Windows 10. Si cela vous semble parfait, consultez notre guide pour exécuter le shell bash sur Windows 10.
A propos de l’auteur