Agence web » Actualités du digital » Personnalisation des erreurs de validation des paramètres dans PowerShell

Personnalisation des erreurs de validation des paramètres dans PowerShell

La gestion des erreurs est souvent l’un des aspects les plus longs et les plus fastidieux de la programmation. Les fonctions avancées PowerShell ont la capacité très utile d’exploiter une multitude de façons de valider les paramètres avant qu’ils ne soient évalués par la fonction dans son ensemble. Éviter les mauvaises données grâce à la validation des paramètres facilite le travail d’un programmeur.

Dans le passé, les erreurs renvoyées à l’utilisateur n’étaient pas toujours très utiles. À partir de PowerShell Core et continuer dans PowerShell 7, la possibilité de définir un message d’erreur personnalisé est devenue possible. Au lieu d’utiliser une erreur par défaut basée sur la décoration des paramètres, vous pouvez définir la vôtre. Apprenez à améliorer vos fonctions avancées pour profiter de cette nouvelle fonctionnalité!

Quel est le ErrorMessage propriété?

Vous avez peut-être vu un décorateur de paramètres tel que ValidateScript avant et, s’il est utilisé, a constaté que le message d’erreur n’était pas toujours le plus descriptif. Il est souvent utile de rédiger votre propre message qui reflète plus précisément ce que fait la fonction et pourquoi vous pouvez avoir une erreur. Trois décorateurs de validation de paramètres ont le supplément ErrorMessage propriété à leur disposition.

  • ValidateSet
  • ValidateScript
  • ValidatePattern

Que fait réellement cette propriété? Tout d’abord, regardons l’ancienne façon de procéder. Dans l’exemple de code ci-dessous, nous utilisons ValidatePattern pour tester si une chaîne comporte 8 chiffres. Si une chaîne entièrement numérique n’est pas fournie, nous recevons une erreur qui pourrait être considérée comme cryptique et pas très utile pour l’utilisateur de votre fonction.

Function Test-ValidatePattern {
    [CmdletBinding()]
    Param (
        [ValidatePattern('^\d{8}



Où est-ce que ErrorMessage entrer alors? Eh bien, en ajoutant simplement la propriété supplémentaire et en spécifiant un message d'erreur à afficher pour l'utilisateur final, nous pouvons rendre la fonction beaucoup plus utile et conviviale.
Function Test-ValidatePattern {
    [CmdletBinding()]
    Param (
        [ValidatePattern('^\d{8}

Extension de la ErrorMessage Fonctionnalité

En utilisant le ErrorMessage Le paramètre permet un affichage des erreurs beaucoup plus convivial. Un aspect qui manque est la valeur qui est transmise en elle-même. Dans le message d'erreur par défaut d'origine, vous avez peut-être remarqué que la valeur transmise et le modèle de regex de validation lui-même étaient affichés dans le message d'erreur. Heureusement, en utilisant une syntaxe similaire à l'opérateur de format dans PowerShell, nous pouvons également inclure ces valeurs dans notre message d'erreur.
  • {0} – Le passé en valeur.
  • {1} – Le modèle regex.
Function Test-ValidatePattern {
    [CmdletBinding()]
    Param (
        [ValidatePattern('^\d{8}



Cette syntaxe fonctionne sur les trois décorateurs de validation et de la même manière.  Le premier paramètre de mise en forme est la représentation textuelle de la valeur transmise, tandis que le second paramètre de mise en forme est soit l'ensemble, le script ou le modèle avec lequel la valeur est comparée.

Autres exemples d’utilisation ErrorMessage

Pour illustrer comment utiliser ErrorMessage dans votre ValidateSet, ValidateScript, et ValidatePattern Les décorateurs peuvent déplacer les étapes de validation de vos blocs de début ou de processus vers les paramètres eux-mêmes, jetons un coup d'œil à une fonction utilisant les trois décorateurs de paramètres.
Function Get-Computer {
  [CmdletBinding()]
  Param (
    [ValidatePattern('^NET-\d{8}



Comme vous pouvez le voir, chaque paramètre étant validé, l'exécution s'arrêterait si la valeur ne passait pas.  Si vous fournissez plusieurs valeurs incorrectes, seule la première entraînera une erreur et les erreurs suivantes ne s'afficheront pas tant que cette valeur n'aura pas été corrigée.

Conclusion




Ajout de fonctionnalités supplémentaires pour le ValidateSet, ValidateScript, et ValidatePattern Les décorateurs de paramètres sont une grande victoire pour la convivialité des fonctions avancées de PowerShell. Au lieu de messages d'erreur cryptiques qui ont une valeur minimale pour l'utilisateur exécutant la fonction, des messages d'erreur appropriés peuvent être affichés qui donnent un aperçu de ce qui n'a pas fonctionné. Cela déplace la gestion des erreurs à un niveau plus élevé que les blocs de début ou de processus, ce qui rend le code plus propre et plus concis. Étant donné que cette fonctionnalité est disponible dans PowerShell Core et PowerShell 7, vous aurez besoin d'une version plus récente de PowerShell pour tirer parti de cette fonctionnalité. La mise à niveau comporte également de nombreux avantages en termes de vitesse, de sécurité et de fonctionnalités. Améliorez vos fonctions avancées avec cette propriété utile et facilitez la vie des utilisateurs de vos fonctions dès aujourd'hui !

★★★★★