Fonctions avancées PowerShell : liaisons et paramètres d’applets de commande
MaisonMaison > Blog > Fonctions avancées PowerShell : liaisons et paramètres d’applets de commande

Fonctions avancées PowerShell : liaisons et paramètres d’applets de commande

Aug 22, 2023

Brien Posey | 08 août 2023

PowerShell, comme d'autres langages de programmation, utilise des fonctions comme des blocs de code répétables.

Les fonctions sont utiles pour isoler de gros blocs de code du corps du script principal. En fait, vous pouvez même transformer une fonction PowerShell en une applet de commande autonome. Vous trouverez ci-dessous un exemple de script PowerShell de base contenant une fonction :

Connexe : Comment filtrer des objets dans PowerShell

Comme vous pouvez le voir, le script ne fait guère plus qu'afficher quelques lignes de texte, appeler une fonction (nommée Do-Something), puis afficher quelques lignes de texte supplémentaires. Le code de la fonction est mis entre accolades.

Maintenant, après avoir examiné un exemple de fonction de base, parlons des fonctions avancées de PowerShell. Le terme « fonction avancée » a une signification spécifique et n'a rien à voir avec la complexité de la fonction. Une fonction avancée est une fonction qui prend en charge les liaisons d’applets de commande, les paramètres, ou les deux.

Nous explorerons ce que signifient ces termes et comment nous pouvons transformer la fonction de base présentée ci-dessus en une fonction avancée.

Si vous avez déjà examiné la syntaxe des applets de commande PowerShell natives, vous avez peut-être remarqué que de nombreuses applets de commande prennent en charge des paramètres communs. Par exemple, dans la figure 1, vous pouvez voir que l'applet de commande Get-Service permet l'utilisation de paramètres communs.

Figure 1.La plupart des applets de commande PowerShell natives permettent l’utilisation de paramètres communs.

Les paramètres courants sont, comme leur nom l'indique, des paramètres largement pris en charge par les applets de commande PowerShell natives. Les paramètres courants populaires incluent :

Voici pourquoi j'évoque les paramètres communs : lorsque vous ajoutez des liaisons d'applets de commande à une fonction, vous activez la fonction pour prendre en charge les paramètres communs. Cela peut paraître un peu étrange, mais cela renvoie à l'idée de convertir une fonction en une applet de commande autonome.

PowerShell simplifie l’ajout d’une liaison d’applet de commande à une fonction. Ajoutez simplement ces deux lignes sous la déclaration de fonction :

Aussi simple que puisse être cette technique, il est important de comprendre que l’ajout d’une liaison d’applet de commande à une fonction ne fait pas grand-chose en soi. Vous devez toujours indiquer à PowerShell comment les paramètres communs doivent être utilisés. Heureusement, c’est généralement plus facile qu’il n’y paraît.

Un paramètre commun couramment utilisé est ErrorAction, qui indique à un script PowerShell comment gérer les erreurs non fatales pouvant survenir lors de l'exécution de la fonction.

Pour démontrer comment cela fonctionne, jetez un œil au script suivant :

Ce script ressemble beaucoup à celui que j'ai présenté plus tôt, avec quelques lignes de code supplémentaires :

Lors de l'exécution du script, il affichera une erreur. Cependant, la fonction continuera à s'exécuter malgré l'erreur, car celle-ci n'était pas fatale. Vous pouvez voir à quoi cela ressemble dans la figure 2. Pour être honnête, même si je n'avais pas inclus d'action d'erreur, la fonction aurait continué à s'exécuter en cas d'erreur non fatale puisque c'est la manière normale de faire les choses de PowerShell.

Figure 2.Lorsque le script PowerShell rencontre une erreur, la fonction continue de s'exécuter.

Il existe plusieurs autres façons de gérer l’erreur. Dans la figure 3, vous pouvez voir ce qui se passe lorsque l'action d'erreur est modifiée en Arrêter. Dans ce cas, même si l’erreur n’est pas fatale, PowerShell termine la fonction dès qu’elle rencontre l’erreur. Il convient de noter que puisque l'action d'erreur est appliquée à l'appel de fonction, seule la fonction (et non l'intégralité du script) se termine lorsque l'erreur se produit. Lorsqu'il rencontre l'erreur, PowerShell abandonne simplement la fonction, revient au corps du script et continue d'exécuter le reste du script.

Figure 3.La définition de ErrorAction sur Stop entraîne la fin de la fonction lorsqu’une erreur se produit.

La figure 4 montre ce qui se passe lorsque vous définissez l'action d'erreur sur SilentlyContinue. Dans ce cas, même si l'erreur se produit, PowerShell masque le message d'erreur et procède à l'exécution de la fonction jusqu'à son achèvement.

Graphique 4.