Le fichier manifeste de module est un fichier de données PowerShell avec l'extension .psd1
. Il contient une simple table de hachage. Les paires clé-valeur dans la table de hachage permettent de :
Une bonne pratique consiste à générer le fichier manifest du module via la cmdlet New-ModuleManifest. L'appel sans paramètre permet de créer une table de hachage minimale :
New-ModuleManifest -Path C:\My.Module.Name.psd1 -ModuleVersion "2.0" -Author "YourNameHere"
On peut définir les valeurs des arguments dans une table de hash puis appeler la cmdlet :
# Définition des paramètres $module_properties = @{ RootModule = '.\aScriptExample.psm1' ModuleVersion = '0.0.0.1' GUID = New-Guid | Select-Object -ExpandProperty Guid Author = 'anAuthorName' CompanyName = 'aCompanyName' Description = "a module short description" PowerShellVersion = '5.1' FunctionsToExport = @("aFunction1", "aFunction2", "aFunction3") CmdletsToExport = @() AliasesToExport = @() VariablesToExport = @('$aVarName1', '$aVarName2') } New-ModuleManifest -Path .\My.Module.Name.psd1 @module_properties
Sans fichier manifest, le nom du module correspond au nom du fichier .psm1
La cmdlet Test-ModuleManifest permet de vérifier la syntaxe du fichier module manifest :
Test-ModuleManifest .\Phobos.Epsilon.filehash.psd1
Fonctions, alias et variables doivent être sélectionnés pour être exportés :
Dans le script on utilise la cmdlet Export-ModuleMember
Export-ModuleMember -Function Get-Test, New-Test, Start-Test -Alias gtt, ntt, stt -Variable aVarName
Depuis la table de hachage du fichier manifest, on renseigne la valeur de la clé VariablesToExport
@{ # Par défaut toutes les variables sont exportés. Ici on définit # Précisément les variables qu'on souhaite exporter. VariablesToExport = @('$aVarName1', '$aVarName2') }
Pour charger le module dans la session active :
Import-Module .\aModuleName.psd1
Ce chargement dynamique est éphémère et ne concerne que le shell en cours d'exécution. Pour que le module soit chargé automatiquement lors du lancement de Powershell, il doit être installé voir la note .
Remove-Module aModuleName
Il est possible d'obtenir le nom du module et sa version depuis l'intérieur du module : ces valeurs sont accessibles en lecture seule :
($MyInvocation.MyCommand.ScriptBlock.Module.Name)