Les fonctions
Intérêt d’une fonction
Dans ce chapitre, nous allons découvrir les fonctions au sein de PowerShell, leur utilité, leur structure, la déclaration des paramètres…
Lorsque nous écrivons des scripts PowerShell, l’exécution est linéaire. Avec des scripts comportant de nombreuses lignes, il arrive régulièrement d’être amené à réécrire du code pour effectuer une action similaire.
Prenons un exemple simple. Nous avons un code permettant de créer une clé ou une valeur de registre. Dans ce code, nous effectuons les actions suivantes :
-
Vérification de la présence de la clé.
-
Vérification de la présence de la valeur.
-
Création de la clé si elle n’existe pas.
-
Création/modification de la valeur.
-
Utilisation de la gestion d’erreur.
Dans l’exemple suivant, nous souhaitons créer la partie suivante dans le registre :
-
clé de registre à créer : HKLM\Software\ENI
-
nom de la valeur à créer : Version
-
type de la valeur : String (chaîne de caractères)
-
contenu de la valeur : 1.0.0
Ci-dessous le code associé :
If(!(test-path "HKLM:\Software\ENI")){New-Item -Path
"HKLM:\Software\ENI" | out-null}
Try
{
New-ItemProperty -Path "HKLM:\Software\ENI" -Name "Version"
-Type "String" -Value "1.0.0" -Force -ea silentlycontinue | out-null
Write_Log -Message_Type "SUCCESS" -Message
"Création/modification de la clé $Name valeur $Value"
}
Catch
{
Write_Log -Message_Type "ERROR" -Message
"Création/modification de la clé $Name valeur $Value"
}
La fonction Write_Log évoquée dans ce code...
Déclaration et appel d’une fonction
1. Déclaration d’une fonction
La déclaration d’une fonction se fait en utilisant la syntaxe suivante :
Function <Nom de la fonction> {
<Corps de la fonction>
}
La déclaration d’une fonction commence toujours par le mot Function suivi du nom de la fonction à créer suivi d’une accolade ouvrante puis une fermante. Entre ces accolades, il faudra insérer le code à exécuter, le cœur de la fonction.
Il n’y a pas d’obligation sur le nommage d’une fonction, cependant la bonne pratique voudrait qu’elle garde la même syntaxe Verbe-Nom qu’une cmdlet.
Nous allons maintenant créer notre première fonction permettant simplement d’afficher du texte dans la console à l’aide de la cmldet write-host.
Function New-message {write-host "Bonjour"}
2. Appel d’une fonction
Appeler une fonction signifie exécuter le contenu de celle-ci. Pour cela, il suffira de copier le nom de la fonction et de le saisir dans la console ou dans un script (le même que celui contenant la fonction).
Ici, l’appel de notre fonction se fera en saisissant : New-message.
Cette fonction nous permettra uniquement d’écrire le mot Bonjour. Il faudra la réécrire à chaque fois avec une nouvelle valeur...
Fonctions et paramètres
1. Qu’est-ce qu’un paramètre de fonction ?
Nous avons vu dans le chapitre PowerShell, un langage de cmdlets que des paramètres pouvaient être spécifiés à des cmdlets pour configurer l’exécution. Ces paramètres peuvent également s’appliquer à des fonctions. Il faudra pour cela spécifier nous-mêmes les paramètres existants et disponibles dans la fonction que nous souhaitons créer.
Dans le cas présent, notre fonction New-Message, le paramètre à créer pourrait être le texte à afficher. Cela nous permettrait alors d’exécuter à nouveau la fonction en spécifiant le texte à afficher en paramètre.
2. Déclaration d’un paramètre
Pour ajouter un paramètre à notre fonction existante, nous devons modifier notre fonction.
Dans un premier temps, voici la syntaxe générale :
Function Verb-Nom {
Param (
$parametre1,
$parametre2
)
<corps de la fonction>
}
Pour déclarer des paramètres à une fonction, il faudra ajouter :
-
un bloc Param avant le corps de la fonction,
-
une parenthèse ouvrante et fermante,
-
nos paramètres entre les parenthèses.
Pour déclarer un paramètre, nous allons utiliser une variable qui sera utilisée dans le corps de la fonction.
Si nous avons plusieurs paramètres, il faudra les séparer à l’aide d’une virgule. Le dernier paramètre n’en aura pas.
Reprenons notre fonction et ajoutons un paramètre afin de personnaliser notre message.
Function New-message {
Param (
$Texte
)
write-host "Bonjour $Texte"}
3. Appel d’une fonction avec paramètres
Pour appeler et exécuter une fonction avec des paramètres, il suffira de saisir le nom de celle-ci puis le nom de chaque paramètre que nous souhaitons utiliser après un tiret.
Dans l’exemple suivant, nous allons appeler notre fonction New-message en ajoutant le paramètre -Texte suivi d’une valeur texte :
À présent, nous allons prendre comme exemple une autre fonction...
Pour aller plus loin : les modules
Après avoir étudié les fonctions, nous comprenons mieux leurs rôles ainsi que leur utilité.
Des fonctions peuvent être regroupées pour former ce que l’on nomme des modules pour ensuite être partagés avec le monde entier en utilisant la PowerShell Gallery.
La création de modules n’est pas abordée dans ce livre. Cependant, elle est traitée dans les livres suivants parus aux Éditions ENI :
-
PowerShell - Fonctionnalités avancées (nouvelle édition), Nicolas Baudin
-
PowerShell Core et Windows PowerShell - Les fondamentaux du langage (2e édition), Arnaud Petitjean et Robin Lemesle