Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
dev:powershell:ecrire_un_module_powershell [2023/08/23 10:51] – yoann | dev:powershell:ecrire_un_module_powershell [2023/08/27 12:25] (Version actuelle) – yoann | ||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
====== Powershell : Créer un module ====== | ====== Powershell : Créer un module ====== | ||
- | ===== Fichier | + | ===== Le fichier |
- | Une bonne pratique consiste à générer le fichier manifest du module via la cmdlet **New-ModuleManifest** : | + | Le fichier manifeste de module est un fichier de données PowerShell avec l' |
+ | * 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' | ||
<code powershell> | <code powershell> | ||
- | New-ModuleManifest -Path C:\myModuleName.psd1 -ModuleVersion " | + | New-ModuleManifest -Path C:\My.Module.Name.psd1 -ModuleVersion " |
</ | </ | ||
Ligne 16: | Ligne 21: | ||
<code powershell> | <code powershell> | ||
# Définition des paramètres | # Définition des paramètres | ||
+ | $module_properties = @{ | ||
+ | | ||
+ | | ||
+ | GUID = New-Guid | Select-Object -ExpandProperty Guid | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | New-ModuleManifest -Path .\My.Module.Name.psd1 @module_properties | ||
</ | </ | ||
Ligne 28: | Ligne 47: | ||
La cmdlet **Test-ModuleManifest** permet de vérifier la syntaxe du fichier module manifest : | La cmdlet **Test-ModuleManifest** permet de vérifier la syntaxe du fichier module manifest : | ||
<code powershell> | <code powershell> | ||
+ | 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** | ||
+ | |||
+ | <code powershell> | ||
+ | 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** | ||
+ | |||
+ | <code powershell> | ||
+ | @{ | ||
+ | # Par défaut toutes les variables sont exportés. Ici on définit | ||
+ | # Précisément les variables qu'on souhaite exporter. | ||
+ | VariablesToExport = @(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Charger le module ===== | ||
+ | |||
+ | Pour charger le module dans la session active : | ||
+ | <code powershell> | ||
+ | Import-Module .\aModuleName.psd1 | ||
+ | </ | ||
+ | |||
+ | Ce chargement dynamique est éphémère et ne concerne que le shell en cours d' | ||
+ | |||
+ | ===== Décharger le module ===== | ||
+ | |||
+ | <code powershell> | ||
+ | Remove-Module aModuleName | ||
</ | </ | ||