Créer sa première fonction PowerShell
Sommaire
I. Présentation
Nous allons apprendre à créer notre première fonction PowerShell, pour que vous puissiez vous familiariser avec cette notion. Nous allons évoquer la syntaxe d'une fonction, tout en utilisant différents exemples.
II. La syntaxe d'une fonction
En PowerShell, sachez qu'il est possible d'écrire des fonctions sans paramètres et des fonctions avec paramètres. Tout dépend de nos besoins. Nous allons étudier les deux syntaxes.
A. Fonction simple sans paramètre
La syntaxe de base pour définir une fonction est la suivante :
function NomDeLaFonction {
# Instructions / code à exécuter lors de l'appel de cette fonction
}
Pour le nom de la fonction, nous essaierons de respecter les bonnes pratiques de Microsoft, à savoir utiliser un verbe approuvé (Get, New, Set, etc...) suivi d'un tiret puis d'un nom.
Ainsi, nous pourrions écrire la fonction "Write-Hello" qui a un seul objectif : retourner "Bonjour !" dans la console, à chaque fois qu'elle est appelée.
Voici le code de la fonction :
function Write-Hello {
Write-Output "Bonjour !"
}
Dans le script, pour appeler cette fonction, il suffira d'écrire ceci :
Write-Hello
Ce qui signifie que si vous écrivons 3 fois "Write-Hello" dans notre script, nous allons appeler 3 fois notre fonction. Voici un exemple :
Note : dans votre code, la fonction doit toujours être déclarée avant qu'elle ne soit appelée.
B. Fonction avec des paramètres
La fonction Write-Hello que nous venons d'écrire est statique puisqu'elle renverra toujours le même résultat. Nous ne pouvons pas jouer sur son comportement ou sur le résultat retourné, car elle n'a pas de paramètres. Au même titre qu'un cmdlet PowerShell, une fonction PowerShell peut avoir un ou plusieurs paramètres.
Dans une fonction, un bloc "param()" doit être intégré pour déclarer des paramètres entre les parenthèses.
function Write-Hello {
param($Parametre1,
$Parametre2
)
Write-Output "Bonjour !"
}
Nous verrons par la suite que le paramètre peut avoir une valeur par défaut, ainsi qu'une configuration (ou "des paramètres de paramètres"). Ceci peut être utile pour le rendre obligatoire.
Nous allons faire évoluer notre exemple précédent. Nous pourrions ajouter le paramètre "-Language" permettant de préciser la langue (sur deux lettres) dans laquelle nous souhaitons dire bonjour. Ensuite, dans la fonction, nous devrons analyser la valeur associée à ce paramètre pour retourner bonjour dans la langue sélectionnée. Nous ferons en sorte que, par défaut, la langue soit le français.
Voici le code de cette fonction au sein de laquelle nous utilisons un switch pour gérer les différentes langues :
function Write-Hello {
param($Language = "FR")
Switch($Language)
{
"FR" { $Hello = "Bonjour" }
"EN" { $Hello = "Hello" }
"ES" { $Hello = "Hola" }
"IT" { $Hello = "Buongiorno" }
default { $Hello = "Bonjour" }
}
return $Hello
}
Désormais, nous pouvons appeler notre fonction, et selon le langage précisé, une valeur différente sera retournée. Si nous ne précisons aucune valeur, le "FR" sera utilisé par défaut puisque nous avons précisé "= "FR"" à la suite du nom du paramètre. Si nous précisons une valeur non prise en charge par la fonction, par exemple "CN", nous aurons quand même un résultat qui sera celui précisé dans l'instruction "default" du Switch (dans d'autres cas, ceci pourrait générer une erreur d'exécution de la fonction).
Nous devons indiquer "-Language" suivi d'une valeur, car ce paramètre est explicitement nommé "Language" au moment de sa déclaration dans la fonction.
Write-Hello
Write-Hello -Language "ES"
Write-Hello -Language "EN"
Voici le résultat, en image :
Vous devez savoir que l'instruction "return" permet d'indiquer ce que la fonction doit retourner. Ici, il s'agit de retourner la valeur de la variable "$Hello", mais ça pourrait être un tableau, un objet, etc. Par ailleurs, sachez que la portée de la variable "$Language" est limitée puisqu'elle existe uniquement au sein de la fonction.
C. Typer un paramètre de fonction
Enfin, pour finir, nous allons voir comment "typer" un paramètre dans une fonction. Ceci signifie que nous allons imposer le type d'une variable, sans laisser la main à PowerShell.
Que ce soit un paramètre de fonction ou une variable dans un script, la syntaxe est la même : le type doit être précisé entre crochets, avant le nom de la variable. Si nous souhaitons utiliser le type "String" pour le paramètre "-Language" puisque nous attendons une chaine de caractères, nous allons utiliser ceci :
function Write-Hello {
param([string]$Language = "FR")
Switch($Language)
{
"FR" { $Hello = "Bonjour" }
"EN" { $Hello = "Hello" }
"ES" { $Hello = "Hola" }
"IT" { $Hello = "Buongiorno" }
default { $Hello = "Bonjour" }
}
return $Hello
}
III. Conclusion
Dans le prochain chapitre, nous allons approfondir le sujet des fonctions PowerShell, notamment en ajoutant des contrôles sur les paramètres de fonction PowerShell.