Traitez les erreurs PowerShell comme un patron avec ces astuces

  • Harry James
  • 0
  • 4574
  • 909
Publicité

Lorsque vous commencez à utiliser des scripts dans PowerShell, il peut être tentant de regrouper une série de commandes Cmdlets Powershell permettant d'améliorer vos compétences Windows Admin Cmdlets Powershell permettant d'améliorer vos compétences Windows Admin Powershell est un outil de ligne de commande et un langage de script similaires. Il vous donne la possibilité d'automatiser votre ordinateur via les mêmes commandes que vous utilisez pour l'administrer. . Cependant, si votre script échoue, vous ne saurez pas par où commencer le dépannage. Pour éviter de perdre votre temps à essayer de deviner pourquoi votre script a échoué, vous devez utiliser la gestion des erreurs..

La gestion des erreurs de PowerShell comporte quatre parties: le paramètre Error Action, les blocs Try / Catch, le paramètre Error Variable et la journalisation..

Erreur PowerShell lors de la manipulation facile

La première fois que vous voulez gérer les erreurs, c'est quand quelque chose arrête votre script dans ses traces. Si l’échec n’affecte pas vos étapes ultérieures, il vaut peut-être mieux l’ignorer et passer à autre chose..

En revanche, il n’est pas toujours évident de savoir quand une applet de commande donnée génère une erreur de fin. Certaines applets de commande renvoient une erreur mais n'arrêtent pas votre script. Vous pouvez ensuite attendre que votre script se termine avant de générer des bêtises..

C'est là que le -ErrorAction Le paramètre intervient. Vous l'utilisez pour forcer une applet de commande à gérer l'erreur comme vous le souhaitez. Si vous modifiez un script existant Augmentez votre productivité avec les scripts Windows PowerShell Augmentez votre productivité avec les scripts Windows PowerShell Et si vous pouviez transférer la productivité de Linux à Windows? La plupart des distributions Linux sont livrées avec le puissant shell Bash. PowerShell est un terminal tout aussi puissant pour Windows. , vous l'ajoutez à la fin de la ligne de commande.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Stop

Évidemment, si vous utilisez le Get-ChildItem cmdlet seule, l’erreur ne fait pas grand chose pour vous. Toutefois, si vous souhaitez utiliser les données, il serait bon d'arrêter le script afin de savoir si la recherche a échoué et pourquoi. Si vous effectuez plusieurs recherches, vous pouvez également modifier le paramètre de Arrêtez à SilencieusementContinuer, le script continue donc si une recherche échoue. Si vous voulez voir quelle est l'erreur, vous pouvez utiliser Continuer comme paramètre à la place.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction SilentlyContinue

Si vous préférez avoir la possibilité de contrôler ce qui se passe chaque fois que votre script est exécuté, vous pouvez le changer en Renseigner. Lorsque votre applet de commande rencontre un problème, elle offre les options suivantes: Oui, oui pour tous, arrêter la commande, suspendre ou aider.

Cette option est un peu plus flexible, mais cela signifie que des erreurs font que votre script attend votre entrée. Ce n'est peut-être pas quelque chose que vous souhaitez lorsque vous exécutez un long processus du jour au lendemain..

Erreur lors de la manipulation du mode de programmation

le ErrorAction Ce paramètre adresse vos erreurs de manière simple. Toutefois, si vous souhaitez un peu plus de contrôle sur les erreurs, PowerShell est toujours à votre disposition. En utilisant Essayer / attraper, nous pouvons maintenant créer une branche dans le script lorsque les cmdlets renvoient une erreur.

Comme le nom le suggère, Essayer / attraper est composé de deux parties. (Il y en a techniquement un troisième, mais nous y reviendrons dans une minute.) Le premier est le Essayer section. Vous allez exécuter votre code normal dans cette section. Vous allez toujours utiliser le -ErrorAction paramètre, mais il ne peut être défini que Arrêtez. Cet indicateur garantit que votre cmdlet déclenche la Capture-même s'il n'y a pas d'erreur de terminaison.

Essayez Get-Process "Cortana" -ErrorAction Stop

Essayez peut également empêcher d'autres cmdlets de s'exécuter si la recherche échoue. Dans ce cas, si vous envoyez le Get-Process résultats à Stop-Process, une recherche ayant échoué empêche l'exécution de la deuxième cmdlet.

Alors, maintenant que vous avez créé un bloc try de cmdlets, que voulez-vous faire en cas d'échec? En utilisant le Capture la moitié, vous allez définir ceci.

Catch Write-Host "Process Not Found"

Comme avec le ErrorAction 3 fonctions Clever PowerShell après la mise à niveau vers Windows 10 3 fonctions Clever PowerShell après la mise à niveau vers Windows 10 Windows 10 nous apporte un nouveau PowerShell, essentiellement une invite de commande sur stéroïdes. Cet article explique comment effectuer l'impossible avec PowerShell. Et c'est plus facile que vous ne le pensez! Capture sera utile pour plus que de donner un échec en langage clair. (Dans l'exemple ci-dessus, l'échec est forcé en utilisant le nom de l'application et non le nom du processus.) Assurez-vous donc de jouer avec Essayer bloquer pour créer une recherche / action dont vous avez besoin. Vous pouvez utiliser le Capture bloquer pour que votre script vous envoie un e-mail en cas d'échec.

La troisième partie est pratique si vous souhaitez que quelque chose soit exécuté, que votre cmdlet réussisse ou non. Pour cela, vous pouvez utiliser le finalement bloc. Vous ajoutez ceci après Try and Catch et vous connectez quand une section de votre script se termine.

La variable d'erreur et la journalisation

Votre script contrôle maintenant la façon dont il traite les erreurs et comment il y répond. Vous pouvez l'utiliser comme une tâche planifiée, ou au moins l'exécuter quand vous n'êtes pas à votre bureau. 5 raisons d'utiliser PowerShell au lieu d'un script en batch 5 raisons d'utiliser un PowerShell au lieu d'un script en batch PowerShell est ce que vous obtiendrez si vous traversé l'invite de commande avec Batch Scripting, ajouté quelques fonctionnalités supplémentaires et relevé le tout de plusieurs crans. Voici plusieurs raisons pour lesquelles vous devriez l'essayer. . Cependant, comment pouvez-vous enquêter sur un script ayant échoué? Avec le -ErrorVariable paramétrez les erreurs de votre cmdlet en écriture dans une variable personnalisée. Ceci est une alternative au système $ Erreur variable, qui contient toutes les erreurs de la session en cours.

Votre applet de commande doit être un peu plus longue. Tout d’abord, définissez une variable, quelque chose comme $ SearchError fera pour l'exemple. Quand vous appelez SearchError dans le ErrorVariable Parmeter, vous n’utilisez pas le signe dollar. Même si vous appelez une variable que vous avez créée, en raison de la manière dont fonctionne le paramètre, vous l’appelez sans le signe dollar. Ajoutez ensuite cela à la fin de la ligne.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Continue -ErrorVariable SearchError

Si vous ajoutez un + devant le nom de la variable, vous pouvez ajouter à la variable plutôt que de la remplacer carrément. Cela vous donne le même comportement que la variable d'erreur globale. Au lieu de cela, vous pouvez utiliser cette sortie et Essayer / attraper pour écrire une sortie personnalisée et l'horodatage.

Pour que cela fonctionne, créez un fichier texte juste après avoir défini la variable d'erreur. Faites cela avec le Nouvel article cmdlet. Vous voudrez peut-être utiliser le Renseigner option pour le ErrorAction paramètre. Cela vous permet d’ajouter à un journal existant lorsque le Nouvel article échec de la cmdlet.

$ SearchLog = fichier-type "~ \ SearchLog.txt" -ErrorAction Inquire

Maintenant, quand vous construisez votre Essayer / attraper bloquer, vous pouvez utiliser le Capture se connecter à un fichier texte. Tu utilises Avoir un rendez-vous pour créer l'horodatage. La mise en forme peut être délicate alors assurez-vous de la copier à partir de l'exemple.

Essayez Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Stop -ErrorVariable SearchError Catch Ajouter-Contenu -Path $ SearchLog -Value "$ (Get-Date -Format dd-MM-yy-) hh_mm_ss) Les fichiers non trouvés ont renvoyé l'erreur: $ SearchError "

Répétez cette procédure si nécessaire pour toutes vos applets de commande. 15 Tâches avancées que PowerShell peut gérer dans Windows 10 15 Tâches avancées que PowerShell peut gérer dans Windows 10 PowerShell est similaire à l'invite de commande, mais en mieux. C'est un puissant outil d'administration système. Nous avons compilé 15 tâches, simples ou complexes, qui tirent parti de la magie de PowerShell. , et vous avez maintenant un bon journal de toutes les erreurs. Si vous voulez suivre les choses qui fonctionnent avec succès, vous pouvez ajouter un Ajouter du contenu à la fin de Essayer bloc. Cette journalisation ne fonctionne que lorsque votre Essayer L'applet de commande réussit. Vous pouvez ensuite enregistrer vos erreurs et vos succès avec des horodatages. La journalisation vous permet maintenant de savoir tout ce que votre script a fait, succès ou échec.

Le pouvoir du code

Utilisation de PowerShell sur la ligne de commande Invite de commandes et Windows PowerShell: quelle est la différence? Invite de commandes et Windows PowerShell: quelle est la différence? Les utilisateurs de Windows peuvent se débrouiller sans utiliser l'invite de commande ou PowerShell. Mais avec Windows 10 et les nouvelles fonctionnalités à venir, il est peut-être temps d'apprendre. est un moyen puissant de gérer votre système. Vous pouvez relier ces mêmes commandes de manière à permettre une automatisation puissante. Une gestion correcte des erreurs est nécessaire pour vous assurer que vos scripts ne font que ce que vous souhaitez. Tout enregistrer peut vous faire gagner du temps lors du dépannage.

Y a-t-il un moment où la gestion des erreurs a enregistré votre bacon? Avez-vous un script PowerShell qui pourrait utiliser une meilleure gestion des erreurs? Quel est votre prochain projet PowerShell? Faites le nous savoir dans les commentaires.




Personne n'a encore commenté ce post.

De la technologie moderne, simple et abordable.
Votre guide dans le monde de la technologie moderne. Apprenez à utiliser les technologies et les gadgets qui nous entourent chaque jour et à découvrir des choses intéressantes sur Internet.