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:40] – supprimée - modification externe (Date inconnue) 127.0.0.1 | dev:powershell:ecrire_un_module_powershell [2023/08/27 12:25] (Version actuelle) – yoann | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | |||
| + | ====== Powershell : Créer un module ====== | ||
| + | |||
| + | ===== Le fichier Manifest ===== | ||
| + | |||
| + | 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> | ||
| + | New-ModuleManifest -Path C: | ||
| + | </ | ||
| + | |||
| + | On peut définir les valeurs des arguments dans une table de hash puis appeler la cmdlet : | ||
| + | |||
| + | <code powershell> | ||
| + | # Définition des paramètres | ||
| + | $module_properties = @{ | ||
| + | | ||
| + | | ||
| + | GUID = New-Guid | Select-Object -ExpandProperty Guid | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | 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 : | ||
| + | <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 | ||
| + | </ | ||
| + | |||
| + | ===== Obtenir la version depuis le module ===== | ||
| + | |||
| + | Il est possible d' | ||
| + | |||
| + | <code powershell> | ||
| + | ($MyInvocation.MyCommand.ScriptBlock.Module.Name) | ||
| + | </ | ||
| + | |||
| + | source : https:// | ||
| + | |||
| + | ===== Références ===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||