3. Créez vos premières fonctions réutilisables

Factoriser du code, passer des paramètres, amorcer la notion de module.
Objectifs
  • Comprendre la structure d’une fonction PowerShell
  • Factoriser du code (réutilisation)
  • Passer des paramètres
  • Introduire la notion de module (bibliothèque de fonctions)
TP guidé : créer une fonction simple, l’appeler avec différents paramètres, puis la réutiliser dans un script.
Syntaxe

Créer une fonction : 2 syntaxes possibles

En PowerShell, une fonction est un bloc de code réutilisable. Elle peut recevoir des paramètres et retourner un résultat (en émettant une valeur sur la sortie ou via return).

Syntaxe 1 : paramètres dans la signature

Exemple : function Nom($param){ ... }

Syntaxe 1 d'une fonction PowerShell : paramètres dans la signature

Syntaxe 2 : bloc param() dans le corps

Exemple : function Nom { param($param) ... }

Syntaxe 2 d'une fonction PowerShell : bloc param()
Détails

Explication de chaque élément

1) Mot-clé : function

Indique à PowerShell que l’on définit une fonction (un bloc réutilisable).

function ... { ... }

2) Nom de la fonction

Suivez la convention Verbe-Nom (ex : Get-, Set-, Test-). Cela rend le code plus clair et compatible avec l’esprit des cmdlets PowerShell.

function Get-Greeting { ... }

3) Paramètres

Les paramètres sont les “entrées” de la fonction. Ils permettent de rendre la fonction réutilisable.

# Syntaxe 1 function Get-Greeting($Name) { ... } # Syntaxe 2 function Get-Greeting { param([string]$Name) ... }

4) Corps de la fonction

Entre les accolades { }, on place le code exécuté quand on appelle la fonction.

{ # instructions }

5) Sortie / résultat

Une fonction peut “retourner” un résultat de deux façons :

  • en émettant une valeur (ex : une chaîne, un nombre) sur la sortie
  • avec return (souvent utilisé pour terminer plus tôt)
"Bonjour" # sortie return "OK" # sortie + fin immédiate

6) Appel de la fonction

On appelle une fonction par son nom, avec ou sans paramètres. En PowerShell, on privilégie la forme nommée : -Name, -Path, etc.

Get-Greeting -Name "Alice"
Exemple

Exemple simple : une fonction de salutation

Exemple volontairement simple pour débuter : on passe un prénom et la fonction renvoie une phrase.

Version avec paramètres dans la signature


function Get-Greeting($Name) {
  "Bonjour $Name"
}

Get-Greeting "Alice"
Get-Greeting "Jean"
          

Ici, on passe le paramètre sans nom (positionnel). C’est pratique mais moins explicite.

Version recommandée (bloc param())


function Get-Greeting {
  param(
    [Parameter(Mandatory=$true)]
    [string]$Name
  )

  "Bonjour $Name"
}

Get-Greeting -Name "Alice"
Get-Greeting -Name "Jean"
          

On force le paramètre et on rend l’appel plus lisible (forme nommée).

Pourquoi cette version est “pro” ? Parce qu’elle est plus robuste : si on oublie -Name, PowerShell demande la valeur, et le script reste fiable.
Rappel

Notion “module” (introduction)

Une fonction est un bloc réutilisable. Plusieurs fonctions regroupées dans un même fichier (.ps1 ou .psm1) peuvent constituer une bibliothèque interne (module) que vous réutilisez sur plusieurs scripts.

Exercice de fin

Exercice — Créer une fonction simple et l’utiliser

Objectif : créer une fonction qui calcule le carré d’un nombre. C’est un exercice court, idéal pour valider : paramètres + appel + résultat.

  1. Créez une fonction Get-Square qui prend un nombre -Number (obligatoire).
  2. La fonction doit renvoyer Number * Number.
  3. Testez avec 2 valeurs : 5 puis 12.
Indice

Utilisez [int]$Number et renvoyez le résultat en fin de fonction.

Corrigé (à ouvrir après avoir essayé)
function Get-Square { param( [Parameter(Mandatory=$true)] [int]$Number ) $Number * $Number } Get-Square -Number 5 Get-Square -Number 12
Point clé : la dernière expression d’une fonction est renvoyée automatiquement (ici : $Number * $Number).
Quiz

Auto-évaluation — Fonctions

Q1 — Une fonction sert principalement à :

Q2 — Les paramètres d’une fonction se déclarent via :

Q3 — “Mandatory=$true” signifie :

Q4 — Une collection de fonctions réutilisables peut former :

Aller au chapitre suivant