Outils pour utilisateurs

Outils du site


dev:powershell:ecrire_un_module_powershell

Powershell : Créer un module

Le fichier Manifest

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 :

  • Décrire le contenu et les attributs du module ;
  • Définir les prérequis au fonctionnement du module ;
  • Contrôler la façon dont les composants sont traités.

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

Nom de module

Sans fichier manifest, le nom du module correspond au nom du fichier .psm1

Tester le module manifest

La cmdlet Test-ModuleManifest permet de vérifier la syntaxe du fichier module manifest :

Test-ModuleManifest .\Phobos.Epsilon.filehash.psd1

Sélection des objets à exporter

Fonctions, alias et variables doivent être sélectionnés pour être exportés :

  • Depuis le script ;
  • Depuis le fichier manifest.

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')
} 

Charger le module

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 .

Décharger le module

Remove-Module aModuleName

Obtenir la version depuis le module

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)

source : https://stackoverflow.com/questions/27236337/is-it-possible-to-set-powershell-module-name-version-without-using-a-manifest

Références

dev/powershell/ecrire_un_module_powershell.txt · Dernière modification : 2023/08/27 12:25 de yoann