Erreurs et exceptions dans PowerShell : un guide complet pour les gérer

Dernière mise à jour: 09/04/2025
Auteur: Isaac
  • Différences entre les erreurs terminales et non terminales dans PowerShell
  • Utilisation avancée de Try/Catch/Finally et de variables comme $Error et $ErrorActionPreference
  • Comment contrôler et personnaliser les messages d'erreur pour un meilleur diagnostic
  • Détecter des exceptions spécifiques à l'aide de types et de Write-Error

Exceptions dans le code PowerShell

PowerShell C'est l'un des outils les plus puissants et les plus polyvalents pour automatiser les tâches dans les environnements Windows. Cependant, comme tout langage de script, il n’est pas sans inconvénients. erreurs et exceptions. Comprendre comment ces erreurs sont signalées, gérées et traitées est essentiel pour créer des scripts robustes, clairs et faciles à déboguer.

Dans cet article, nous allons plonger dans le monde de Erreurs et exceptions dans PowerShell. Vous apprendrez non seulement à identifier correctement les différents types d’erreurs, mais également à travailler efficacement avec des structures telles que Try/Catch/Finally, utilisez des variables clés telles que $Erreur o $ErrorActionPreference, et maîtriser des techniques avancées telles que le lancement et la capture d'exceptions avec des types spécifiques.

Erreurs PowerShell : concepts clés

Lors de l’utilisation de PowerShell, les erreurs font partie intégrante du développement quotidien des scripts. Un bug est fondamentalement toute condition inattendue qui se produit pendant l’exécution du code. Mais toutes les erreurs ne sont pas identiques et ne sont pas traitées de la même manière.

Nous pouvons classer les erreurs en deux types principaux :: erreurs de terminaison et erreurs qui n'arrêtent pas le scénario (erreurs non terminales).

  • Erreurs de terminaison: sont des erreurs critiques qui arrêter immédiatement l'exécution du script ou de l'applet de commande. Ces erreurs peuvent être capturées à l’aide de structures try/catch.
  • Erreurs non fatales: n'arrêtez pas le script. PowerShell les signale simplement en rouge, les enregistre dans $Error et continue d'exécuter le reste du code.

Par exemple, si vous essayez d'accéder à un fichier qui n'existe pas, PowerShell signalera généralement l'erreur, mais continuer le traitement, sauf indication contraire de votre part. Pour plus d'informations sur la gestion avancée des erreurs, vous pouvez consulter notre article sur gestion des erreurs dans PowerShell.

  Apprenez à réparer Bluetooth qui ne fonctionne pas sous Windows 10

La variable $Error et comment l'utiliser

PowerShell conserve un historique des erreurs dans la variable automatique $Error, qui agit comme une liste dans laquelle sont stockées toutes les erreurs survenues pendant la session.

Quelques clés sur cette variable :

  • $Error C'est toujours l'erreur la plus récente.
  • Contient des objets de type ErrorRecord, pas seulement des messages texte.
  • Maximum de 256 erreurs stockées par défaut, configurable via $MaximumErrorCount.

Exemple d'utilisation :

# Ver el último error
$Error

# Limpiar la lista de errores
$Error.Clear()

Vous devez prendre en compte que, étant une variable globale, les erreurs de toute la session sont stockés ici, pas seulement ceux de votre script. Il est donc conseillé de ne pas trop s'y fier ni de le vider si vous devez travailler avec de nouveaux disques.

Vous pouvez aussi utiliser Variable d'erreur comme alternative, qui capture les erreurs dans des variables spécifiques pour chaque applet de commande, sans affecter le global $Error.

Paramètres et préférences pour la gestion des erreurs

PowerShell propose plusieurs façons de décider comment les erreurs doivent se comporter. Les deux plus pertinents sont :

  • Paramètre -ErrorAction: Vous pouvez l’utiliser lors de l’appel d’une applet de commande pour décider comment agir en cas d’erreur.
  • La variable globale $ErrorActionPreference: Définit la politique d'erreur générale pour l'ensemble de l'environnement ou du script.

Les valeurs que vous pouvez utiliser sont :

  • Continuer (par défaut) : Affiche l'erreur et continue l'exécution.
  • Continuer en silence: Il n'affiche pas l'erreur mais l'enregistre dans $Error.
  • Arrêter: Traitez les erreurs comme fatales et arrêter le script, leur permettant d'être capturés avec try/catch.
  • Demander:Demandez à l'utilisateur ce qu'il doit faire.
  • ignorer (depuis PowerShell 3.0) : ignore complètement l'erreur, sans l'enregistrer ni l'afficher.

Exemple pratique:

$ErrorActionPreference = "Stop"  # Todos los errores serán tratados como fatales
Get-ChildItem "C:\RutaInexistente" -ErrorAction SilentlyContinue

Cela nous donne une flexibilité brutale pour décider quels types d'erreurs méritent d'être interrompues et lesquelles ne le méritent pas. Pour plus de détails sur la gestion des erreurs dans les scripts, consultez notre guide sur exécuter des scripts dans PowerShell.

Utilisation de Try, Catch et Finally

À partir de PowerShell 2.0, nous pouvons utiliser blocs try/catch/finally pour capturer les erreurs de manière structurée.

  Découvrez comment ouvrir les onglets récemment fermés sur iPhone ou iPad

Sa syntaxe est la suivante :

Try {
  # Código que podría fallar
}
Catch  {
  # Código para manejar esa excepción
}
Catch {
  # Código para manejar errores genéricos
}
Finally {
  # Código que siempre se ejecuta al final, falle o no
}

Le bloc Try exécute du code qui pourrait potentiellement générer une erreur. Si un type fatal (terminatif) se produit, nous sautons dans le Catch correspondant. Si aucun type d'exception n'est spécifié, toute erreur est détectée.

Le bloc Enfin C'est facultatif mais utile lorsque vous devez libérer des ressources, fermer des connexions ou nettoyer.

Exemple réel :

Try {
  Get-Content "C:\ArchivoInexistente.txt" -ErrorAction Stop
}
Catch {
  Write-Error "No se pudo abrir el archivo: $($_.Exception.Message)"
}
Finally {
  Write-Output "Finalizado"
}

Dans le Catch, vous pouvez utiliser des variables automatiques $_ o $PSItem pour obtenir des détails sur l'erreur, comme son message, son type, sa trace de pile, etc. Si vous souhaitez en savoir plus sur la façon d'améliorer les scripts et de gérer des exceptions spécifiques, consultez notre article sur corrections de bugs dans Windows 10.

...

Gérer correctement les erreurs dans PowerShell est l’une des compétences clés pour créer des scripts professionnels. et empêcher qu’une tâche critique soit interrompue par des problèmes mineurs. Maîtriser des structures comme Try/Catch/Finally, comprendre les variables automatiques proposées par PowerShell et apprendre à travailler avec des exceptions typées sont des étapes fondamentales pour améliorer la qualité de notre code.

De plus, des outils comme Erreur d'écriture, combiné avec des paramètres tels que -ErrorAction, nous donne un contrôle total sur le moment et la manière dont les erreurs doivent être affichées, nous permettant de les personnaliser en détail et de contribuer à une meilleure expérience pour ceux qui exécutent nos scripts.

Comment gérer les erreurs dans PowerShell-3
Article connexe:
Comment gérer efficacement les erreurs dans PowerShell

Laisser un commentaire