Lorsqu'on produit du code on peut avoir envie ou besoin de :
Une fonctions est un bloc de code réutilisable. Plutôt que d'écrire à différents endroits la même séquence d'instructions, il est préférable d'utiliser une fonction. Elle est définie une fois puis appelée autant de fois que nécessaire par le script. Cette factorisation du code est un élément clé pour la lisibilité, le débogage et la maintenance.
Ci-dessous la syntaxe de définition d'une fonction en PowerShell :
# Définition d'une fonction nommée "Get-SecurityEvent()" # Acceptant un paramètre de type entier Function Get-SecurityEvent { Param( [int] $Last ) Get-EventLog Security -Newest $Last # Valeurs à retourner (optionnel) Return($values) }
La note utilisation des paramètres détaille l'usage de l'instruction Param().
Pour appeler la fonction dans le script, utiliser la syntaxe :
Get-SecurityEnvent -Last 30
Les fonctions dans les modules peuvent inclure une aide basée sur des commentaires, détectable à l’aide de la cmdlet Get-Help. Pour cela, vous devez inclure les informations d’aide dans chaque fonction.
3 portées distinctes existent :
Global | Variables accessibles dans l'invite PowerShell et les processus fils. |
---|---|
Script | Variables accessibles dans le script courant et les fonctions. Une variable de portée Script masque la valeur d'une variable de portée Global de même nom. |
Fonction | Limitée à la seule fonction. |
Les modules permettent de regrouper des fonctions et des variables afin de les partager entre plusieurs scripts ou de distribuer du code.
# Crée un répertoire pour le module New-Item -ItemType Directory -Path .\Custom-Message # Créer un fichier module Set-Location .\Write-BlueMessage\ New-Item -ItemType File -Path .\Custom-Message.psm1
Ci-dessous le contenu du module
# Fonction : Write-BlueMessage # Description : Affiche un message de couleur bleue # Args : Msg : Le message à afficher Function Write-BlueMessage{ Param( [Parameter(Mandatory,helpMessage='Message to display')] [String] $Msg ) Write-Host -ForegroundColor Blue "$Msg" }
Une fois le module créé, il peut être chargé via la cmdlet Import-Module
Import-Module .\Custom-Message.psm1 # Après import la fonction peut être invoquée Write-BlueMessage -Msg "Hello World !!!"
Le dot sourcing est une méthode d'importation d'un autre script dans la portée actuelle.
Normalement les fonctions définies dans un fichier de script sont supprimées de la mémoire lorsque le script se termine. Avec le “dot sourcing” les fonctions restent en mémoire et vous pouvez les utiliser dans l'environnement courant : le script courant ou l’invite de commande de Windows PowerShell.
# Chargement d'un script via dot sourcing
. .\aScriptFile.ps1
L’appel “dot sourcing” peut charger un fichier local ou une ressource réseau à l’aide d’un chemin UNC.
Par le passé, le dot sourcing était la seule méthode permettant de gérer un référentiel centralisé de fonctions réutilisables. A présent les modules constituent une méthode préférable et standardisée pour la gestion des fonctions entre plusieurs scripts.