Outils pour utilisateurs

Outils du site


dev:powershell:ecrire_un_module_powershell

Ceci est une ancienne révision du document !


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 = @()
}
 
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

Chargement du 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 .

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.1692799075.txt.gz · Dernière modification : 2023/08/23 13:57 de yoann