Comment écrire un manifeste de module PowerShell

Une fois que vous avez écrit votre module PowerShell, vous pouvez ajouter un manifeste de module facultatif qui inclut des informations sur le module. Par exemple, vous pouvez décrire l’auteur, spécifier des fichiers dans le module (tels que des modules imbriqués), exécuter des scripts pour personnaliser l’environnement de l’utilisateur, charger les fichiers de type et de mise en forme, définir la configuration système requise et limiter les membres que le module exporte.

Création d’un manifeste de module

Un manifeste de module est un fichier de données PowerShell (.psd1) qui décrit le contenu d’un module et détermine comment un module est traité. Le fichier manifeste est un fichier texte qui contient une table de hachage de clés et de valeurs. Vous liez un fichier manifeste à un module en nommant le manifeste de la même façon que le module et en stockant le manifeste dans le répertoire racine du module.

Pour les modules simples qui contiennent uniquement un seul assembly .psm1 ou binaire, un manifeste de module est facultatif. Toutefois, la recommandation consiste à utiliser un manifeste de module dans la mesure du possible, car il est utile de vous aider à organiser votre code et à gérer les informations de contrôle de version. Et un manifeste de module est requis pour exporter un assembly installé dans le Global Assembly Cache. Un manifeste de module est également requis pour les modules qui prennent en charge la fonctionnalité d’aide pouvant être mise à jour. L’aide pouvant être mise à jour utilise la clé HelpInfoUri dans le manifeste du module pour rechercher le fichier d’informations d’aide (HelpInfo XML) qui contient l’emplacement des fichiers d’aide mis à jour pour le module. Pour plus d’informations sur l’aide pouvant être mise à jour, consultez Prise en charge de l’aide pouvant être mise à jour.

Pour créer et utiliser un manifeste de module

  1. La meilleure pratique pour créer un manifeste de module consiste à utiliser la cmdlet New-ModuleManifest. Vous pouvez utiliser des paramètres pour spécifier une ou plusieurs des clés et valeurs par défaut du manifeste. La seule exigence consiste à nommer le fichier. New-ModuleManifest crée un manifeste de module avec vos valeurs spécifiées et inclut les clés restantes et leurs valeurs par défaut. Si vous devez créer plusieurs modules, utilisez New-ModuleManifest pour créer un modèle de manifeste de module qui peut être modifié pour vos différents modules. Pour obtenir un exemple de manifeste de module par défaut, consultez l’exemple de manifeste de module .

    New-ModuleManifest -Path C:\myModuleName.psd1 -ModuleVersion "2.0" -Author "YourNameHere"

    Une alternative consiste à créer manuellement la table de hachage du manifeste de module à l’aide des informations minimales requises, le ModuleVersion. Vous enregistrez le fichier avec le même nom que votre module et utilisez l’extension de fichier .psd1. Vous pouvez ensuite modifier le fichier et ajouter les clés et valeurs appropriées.

  2. Ajoutez tous les éléments supplémentaires souhaités dans le fichier manifeste.

    Pour modifier le fichier manifeste, utilisez n’importe quel éditeur de texte que vous préférez. Toutefois, le fichier manifeste est un fichier de script qui contient du code. Vous pouvez donc le modifier dans un environnement de script ou de développement, tel que Visual Studio Code. Tous les éléments d’un fichier manifeste sont facultatifs, à l’exception du numéro ModuleVersion.

    Pour plus d’informations, consultez les descriptions des paramètres dans l’applet de commande New-ModuleManifest. Pour obtenir des descriptions des clés et des valeurs que vous pouvez inclure dans un manifeste de module, consultez about_Module_Manifests.

  3. Pour résoudre les scénarios qui peuvent ne pas être couverts par les éléments de manifeste du module de base, vous avez la possibilité d’ajouter du code supplémentaire à votre manifeste de module.

    Pour les problèmes de sécurité, PowerShell exécute uniquement un petit sous-ensemble des opérations disponibles dans un fichier manifeste de module. En règle générale, vous pouvez utiliser l’instruction if, les opérateurs arithmétiques et de comparaison, ainsi que les types de données PowerShell de base.

  4. Une fois que vous avez créé votre manifeste de module, vous pouvez le tester pour vérifier que les chemins décrits dans le manifeste sont corrects. Pour tester votre manifeste de module, utilisez test-ModuleManifest.

    Test-ModuleManifest myModuleName.psd1

  5. Assurez-vous que votre manifeste de module se trouve dans le niveau supérieur du répertoire qui contient votre module.

    Lorsque vous copiez votre module sur un système et que vous l’importez, PowerShell utilise le manifeste du module pour importer votre module.

  6. Si vous le souhaitez, vous pouvez tester directement votre manifeste de module avec un appel à import-module en approvisionnant le manifeste lui-même.

    Import-Module .\myModuleName.psd1

Exemple de manifeste de module

L’exemple de manifeste de module suivant a été créé avec New-ModuleManifest dans PowerShell 7 et contient les clés et valeurs par défaut. Pour obtenir une description détaillée de chaque élément d’un manifeste de module, consultez about_Module_Manifests.

#
# Module manifest for module 'SampleModuleManifest'
#
# Generated by: User01
#
# Generated on: 10/15/2019
#

@{

# Script module or binary module file associated with this manifest.
# RootModule = ''

# Version number of this module.
ModuleVersion = '0.0.1'

# Supported PSEditions
# CompatiblePSEditions = @()

# ID used to uniquely identify this module
GUID = 'b632e90c-df3d-4340-9f6c-3b832646bf87'

# Author of this module
Author = 'User01'

# Company or vendor of this module
CompanyName = 'Unknown'

# Copyright statement for this module
Copyright = '(c) User01. All rights reserved.'

# Description of the functionality provided by this module
# Description = ''

# Minimum version of the PowerShell engine required by this module
# PowerShellVersion = ''

# Name of the PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()

# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
FunctionsToExport = @()

# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
CmdletsToExport = @()

# Variables to export from this module
VariablesToExport = '*'

# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
AliasesToExport = @()

# DSC resources to export from this module
# DscResourcesToExport = @()

# List of all modules packaged with this module
# ModuleList = @()

# List of all files packaged with this module
# FileList = @()

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        # Tags = @()

        # A URL to the license for this module.
        # LicenseUri = ''

        # A URL to the main website for this project.
        # ProjectUri = ''

        # A URL to an icon representing this module.
        # IconUri = ''

        # ReleaseNotes of this module
        # ReleaseNotes = ''

        # Prerelease string of this module
        # Prerelease = ''

        # Flag to indicate whether the module requires explicit user acceptance for install/update/save
        # RequireLicenseAcceptance = $false

        # External dependent modules of this module
        # ExternalModuleDependencies = @()

    } # End of PSData hashtable

} # End of PrivateData hashtable

# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}

Voir aussi