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 est l'un des outils les plus puissants et polyvalents pour automatiser les tâches dans les environnements Windows . Cependant, comme tout langage de script, il n'est pas exempt d'erreurs et d'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 explorerons en profondeur le monde des erreurs et des exceptions dans PowerShell . Vous apprendrez non seulement à identifier correctement les différents types d'erreurs, mais aussi à utiliser efficacement des structures comme Try/Catch/Finally , des variables clés telles que $Error ou $ErrorActionPreference , et à maîtriser des techniques avancées comme la levée et la capture d'exceptions de types spécifiques.

Erreurs PowerShell : concepts clés

Lorsqu'on utilise PowerShell, les erreurs font partie intégrante du développement de scripts. Une erreur correspond à toute condition inattendue survenant lors de l'exécution du code. Cependant, toutes les erreurs ne sont pas identiques et leur gestion varie.

On peut classer les erreurs en deux types principaux : les erreurs bloquantes et les erreurs non bloquantes.

  • 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 tentez d'accéder à un fichier inexistant, PowerShell signalera généralement l'erreur, mais poursuivra l'exécution sauf indication contraire de votre part. Pour plus d'informations sur la gestion avancée des erreurs, consultez notre article sur la gestion des erreurs dans PowerShell.

  Exemples pratiques d'utilisation des statistiques de la calculatrice Windows

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()

N'oubliez pas que, s'agissant d'une variable globale, les erreurs de toute la session y sont stockées, et pas seulement celles de votre script. Par conséquent, il est conseillé de ne pas trop s'y fier ou de l'effacer avant de travailler avec de nouveaux enregistrements.

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 offre plusieurs façons de définir le comportement des erreurs . Les deux plus pertinentes 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 offre une flexibilité incroyable pour décider quels types d'erreurs justifient une interruption et lesquels ne le nécessitent pas . Pour plus de détails sur la gestion des erreurs dans les scripts, consultez notre guide sur l'exécution de scripts dans PowerShell.

Utilisation de Try, Catch et Finally

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

  Comment corriger le code d'erreur #0x80070005

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 le code susceptible de générer une erreur. En cas d'erreur fatale (arrêtant l'exécution), le code passe au bloc Catch correspondant. Si aucun type d'exception n'est spécifié, toute erreur est interceptée.

Le bloc Finally est facultatif mais utile lorsque vous devez libérer des ressources, fermer des connexions ou effectuer un nettoyage.

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.

...

La gestion adéquate des erreurs en PowerShell est essentielle pour créer des scripts professionnels et éviter que des problèmes mineurs n'interrompent des tâches critiques. Maîtriser des structures comme Try/Catch/Finally, comprendre les variables automatiques offertes par PowerShell et apprendre à gérer les exceptions typées sont des étapes fondamentales pour améliorer la qualité du 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