Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
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, utilisezNew-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.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 obtenir des descriptions des clés et des valeurs que vous pouvez inclure dans un manifeste de module, consultez les éléments de manifeste de module table. Pour plus d’informations, consultez les descriptions des paramètres dans l’applet de commande New-ModuleManifest.
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.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
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.
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
Éléments de manifeste de module
Le tableau suivant décrit les éléments que vous pouvez inclure dans un manifeste de module.
Élément | Par défaut | Description |
---|---|---|
RootModule Entrez : String |
<empty string> |
Script de module ou fichier de module binaire associé à ce manifeste. Les versions précédentes de PowerShell ont appelé cet élément le ModuleToProcess. Les types possibles pour le module racine peuvent être vides, ce qui crée un module manifeste , le nom d’un module de script ( .psm1 ) ou le nom d’un module binaire (.exe ou .dll ). Le fait de placer le nom d’un manifeste de module (.psd1 ) ou d’un fichier de script (.ps1 ) dans cet élément provoque une erreur. Exemple : RootModule = 'ScriptModule.psm1' |
ModuleVersion Entrez : Version |
'0.0.1' |
Numéro de version de ce module. Si aucune valeur n’est spécifiée, New-ModuleManifest utilise la valeur par défaut. La chaîne doit être en mesure de convertir en type Version par exemple #.#.#.# .
Import-Module charge le premier module qu’il trouve sur l'$PSModulePath qui correspond au nom, et a au moins une ModuleVersion, comme paramètre MinimumVersion. Pour importer une version spécifique, utilisez le paramètre requiredVersion de l’applet de commande Import-Module .Exemple : ModuleVersion = '1.0' |
GUID Entrez : GUID |
'<GUID>' |
ID utilisé pour identifier de manière unique ce module. Si aucune valeur n’est spécifiée, New-ModuleManifest génère automatiquement la valeur. Vous ne pouvez pas importer de module en GUID. Exemple : GUID = 'cfc45206-1e49-459d-a8ad-5b571ef94857' |
Author Entrez : String |
'<Current user>' |
Auteur de ce module. Si aucune valeur n’est spécifiée, New-ModuleManifest utilise l’utilisateur actuel. Exemple : Author = 'AuthorNameHere' |
CompanyName Entrez : String |
'Unknown' |
Société ou fournisseur de ce module. Si aucune valeur n’est spécifiée, New-ModuleManifest utilise la valeur par défaut.Exemple : CompanyName = 'Fabrikam' |
copyright Entrez : String |
'(c) <Author>. All rights reserved.' |
Déclaration de copyright pour ce module. Si aucune valeur n’est spécifiée, New-ModuleManifest utilise la valeur par défaut avec l’utilisateur actuel comme <Author> . Pour spécifier un auteur, utilisez le paramètre Author. Exemple : Copyright = '2019 AuthorName. All rights reserved.' |
Description Entrez : String |
<empty string> |
Description des fonctionnalités fournies par ce module. Exemple : Description = 'This is the module's description.' |
powerShellVersion Entrez : Version |
<empty string> |
Version minimale du moteur PowerShell requise par ce module. Les valeurs valides sont 1.0, 2.0, 3.0, 4.0, 5.0, 5.1, 6.0, 6.1, 6.2, 7.0 et 7.1. Exemple : PowerShellVersion = '5.0' |
PowerShellHostName Entrez : String |
<empty string> |
Nom de l’hôte PowerShell requis par ce module. Ce nom est fourni par PowerShell. Pour trouver le nom d’un programme hôte, dans le programme, tapez : $Host.Name .Exemple : PowerShellHostName = 'ConsoleHost' |
powerShellHostVersion Entrez : Version |
<empty string> |
Version minimale de l’hôte PowerShell requise par ce module. Exemple : PowerShellHostVersion = '2.0' |
DotNetFrameworkVersion Entrez : Version |
<empty string> |
Version minimale de Microsoft .NET Framework requise par ce module. Cette condition préalable est valide pour l’édition PowerShell Desktop uniquement, telle que Windows PowerShell 5.1, et s’applique uniquement aux versions de .NET Framework inférieures à 4.5. Exemple : DotNetFrameworkVersion = '3.5' |
CLRVersion Entrez : Version |
<empty string> |
Version minimale du Common Language Runtime (CLR) requise par ce module. Cette condition préalable est valide pour l’édition PowerShell Desktop uniquement, telle que Windows PowerShell 5.1, et s’applique uniquement aux versions de .NET Framework inférieures à 4.5. Exemple : CLRVersion = '3.5' |
ProcessorArchitecture Entrez : ProcessorArchitecture |
<empty string> |
Architecture du processeur (None, X86, Amd64) requise par ce module. Les valeurs valides sont x86, AMD64, Arm, IA64, MSIL et None (inconnues ou non spécifiées). Exemple : ProcessorArchitecture = 'x86' |
ObligatoireModules Entrez : Object[] |
@() |
Modules qui doivent être importés dans l’environnement global avant d’importer ce module. Cela charge tous les modules répertoriés, sauf s’ils ont déjà été chargés. Par exemple, certains modules peuvent déjà être chargés par un autre module. Il est possible de spécifier une version spécifique à charger à l’aide de RequiredVersion plutôt que d'ModuleVersion . Lorsque ModuleVersion est utilisé, il charge la version la plus récente disponible avec un minimum de la version spécifiée. Vous pouvez combiner des chaînes et des tables de hachage dans la valeur du paramètre.Exemple : RequiredModules = @("MyModule", @{ModuleName="MyDependentModule"; ModuleVersion="2.0"; GUID="cfc45206-1e49-459d-a8ad-5b571ef94857"}) Exemple : RequiredModules = @("MyModule", @{ModuleName="MyDependentModule"; RequiredVersion="1.5"; GUID="cfc45206-1e49-459d-a8ad-5b571ef94857"}) |
RequiredAssemblies Entrez : String[] |
@() |
Assemblys qui doivent être chargés avant l’importation de ce module. Spécifie les noms de fichiers d’assembly (.dll ) requis par le module.PowerShell charge les assemblys spécifiés avant de mettre à jour des types ou des formats, d’importer des modules imbriqués ou d’importer le fichier de module spécifié dans la valeur de la clé RootModule. Utilisez ce paramètre pour répertorier tous les assemblys requis par le module. Exemple : RequiredAssemblies = @("assembly1.dll", "assembly2.dll", "assembly3.dll") |
ScriptsToProcess Entrez : String[] |
@() |
Fichiers de script (.ps1 ) qui sont exécutés dans l’état de session de l’appelant lorsque le module est importé. Il peut s’agir de l’état de session global ou, pour les modules imbriqués, de l’état de session d’un autre module. Vous pouvez utiliser ces scripts pour préparer un environnement tout comme vous pouvez utiliser un script de connexion.Ces scripts sont exécutés avant le chargement d’un des modules répertoriés dans le manifeste. Exemple : ScriptsToProcess = @("script1.ps1", "script2.ps1", "script3.ps1") |
TypesToProcess Entrez : String[] |
@() |
Tapez des fichiers (.ps1xml ) à charger lors de l’importation de ce module. Exemple : TypesToProcess = @("type1.ps1xml", "type2.ps1xml", "type3.ps1xml") |
FormatsToProcess Entrez : String[] |
@() |
Mettre en forme les fichiers (.ps1xml ) à charger lors de l’importation de ce module. Exemple : FormatsToProcess = @("format1.ps1xml", "format2.ps1xml", "format3.ps1xml") |
NestedModules Entrez : Object[] |
@() |
Modules à importer en tant que modules imbriqués du module spécifié dans RootModule (alias :ModuleToProcess). L’ajout d’un nom de module à cet élément est similaire à l’appel de Import-Module à partir de votre script ou code d’assembly. La principale différence en utilisant un fichier manifeste est qu’il est plus facile de voir ce que vous chargez. Et, si un module ne parvient pas à charger, vous n’aurez pas encore chargé votre module réel.En plus d’autres modules, vous pouvez également charger des fichiers de script ( .ps1 ) ici. Ces fichiers s’exécutent dans le contexte du module racine. Cela équivaut à pointer l’approvisionnement du script dans votre module racine. Exemple : NestedModules = @("script.ps1", @{ModuleName="MyModule"; ModuleVersion="1.0.0.0"; GUID="50cdb55f-5ab7-489f-9e94-4ec21ff51e59"}) |
FunctionsToExport Entrez : String[] |
@() |
Spécifie les fonctions à exporter à partir de ce module, pour des performances optimales, n’utilisez pas de caractères génériques et ne supprimez pas l’entrée, utilisez un tableau vide s’il n’existe aucune fonction à exporter. Par défaut, aucune fonction n’est exportée. Vous pouvez utiliser cette clé pour répertorier les fonctions exportées par le module. Le module exporte les fonctions vers l’état de session de l’appelant. L’état de session de l’appelant peut être l’état de session global ou, pour les modules imbriqués, l’état de session d’un autre module. Lors du chaînage des modules imbriqués, toutes les fonctions exportées par un module imbriqué sont exportées vers l’état de session globale, sauf si un module de la chaîne restreint la fonction à l’aide de la clé FunctionsToExport. Si le manifeste exporte des alias pour les fonctions, cette clé peut supprimer les fonctions dont les alias sont répertoriés dans la clé AliasesToExport, mais cette clé ne peut pas ajouter d’alias de fonction à la liste. Exemple : FunctionsToExport = @("function1", "function2", "function3") |
CmdletsToExport Entrez : String[] |
@() |
Spécifie les applets de commande à exporter à partir de ce module, pour des performances optimales, n’utilisez pas de caractères génériques et ne supprimez pas l’entrée, utilisez un tableau vide s’il n’y a pas d’applets de commande à exporter. Par défaut, aucune applet de commande n’est exportée. Vous pouvez utiliser cette clé pour répertorier les applets de commande exportées par le module. L’état de session de l’appelant peut être l’état de session global ou, pour les modules imbriqués, l’état de session d’un autre module. Lorsque vous chaînez des modules imbriqués, toutes les applets de commande exportées par un module imbriqué sont exportées vers l’état de session globale, sauf si un module de la chaîne restreint l’applet de commande à l’aide de la clé CmdletsToExport. Si le manifeste exporte des alias pour les applets de commande, cette clé peut supprimer les applets de commande dont les alias sont répertoriés dans la AliasesToExport clé, mais cette clé ne peut pas ajouter d’alias d’applet de commande à la liste. Exemple : CmdletsToExport = @("Get-MyCmdlet", "Set-MyCmdlet", "Test-MyCmdlet") |
VariablesToExport Entrez : String[] |
'*' |
Spécifie les variables que le module exporte vers l’état de session de l’appelant. Les caractères génériques sont autorisés. Par défaut, toutes les variables ('*' ) sont exportées. Vous pouvez utiliser cette clé pour restreindre les variables exportées par le module.L’état de session de l’appelant peut être l’état de session global ou, pour les modules imbriqués, l’état de session d’un autre module. Lorsque vous chaînez des modules imbriqués, toutes les variables exportées par un module imbriqué sont exportées vers l’état de session globale, sauf si un module de la chaîne restreint la variable à l’aide de la clé VariablesToExport. Si le manifeste exporte également des alias pour les variables, cette clé peut supprimer des variables dont les alias sont répertoriés dans l'AliasesToExport clé, mais cette clé ne peut pas ajouter d’alias de variable à la liste. Exemple : VariablesToExport = @('$MyVariable1', '$MyVariable2', '$MyVariable3') |
AliasesToExport Entrez : String[] |
@() |
Spécifie les alias à exporter à partir de ce module, pour des performances optimales, n’utilisez pas de caractères génériques et ne supprimez pas l’entrée, utilisez un tableau vide s’il n’y a pas d’alias à exporter. Par défaut, aucun alias n’est exporté. Vous pouvez utiliser cette clé pour répertorier les alias exportés par le module. Le module exporte les alias vers l’état de session de l’appelant. L’état de session de l’appelant peut être l’état de session global ou, pour les modules imbriqués, l’état de session d’un autre module. Lorsque vous chaînez des modules imbriqués, tous les alias exportés par un module imbriqué seront finalement exportés vers l’état de session globale, sauf si un module de la chaîne restreint l’alias à l’aide de la clé AliasesToExport. Exemple : AliasesToExport = @("MyAlias1", "MyAlias2", "MyAlias3") |
DscResourcesToExport Entrez : String[] |
@() |
Spécifie les ressources DSC à exporter à partir de ce module. Les caractères génériques sont autorisés. Exemple : DscResourcesToExport = @("DscResource1", "DscResource2", "DscResource3") |
moduleList Entrez : Object[] |
@() |
Spécifie tous les modules qui sont empaquetés avec ce module. Ces modules peuvent être entrés par nom, à l’aide d’une chaîne séparée par des virgules ou en tant que table de hachage avec ModuleName et GUID clés. La table de hachage peut également avoir une clé ModuleVersion facultative. La clé moduleList est conçue pour servir d’inventaire de module. Ces modules ne sont pas traités automatiquement. Exemple : ModuleList = @("SampleModule", "MyModule", @{ModuleName="MyModule"; ModuleVersion="1.0.0.0"; GUID="50cdb55f-5ab7-489f-9e94-4ec21ff51e59"}) |
FileList Entrez : String[] |
@() |
Liste de tous les fichiers empaquetés avec ce module. Comme avec moduleList, FileList est une liste d’inventaire et n’est pas traitée autrement. Exemple : FileList = @("File1", "File2", "File3") |
privateData Entrez : Object |
@{...} |
Spécifie toutes les données privées qui doivent être passées au module racine spécifié par la clé RootModule (alias : ModuleToProcess). PrivateData est une table de hachage qui comprend plusieurs éléments : Tags, LicenseUri, ProjectURI, IconUri, ReleaseNotes, Prerelease , RequireLicenseAcceptanceet ExternalModuleDependencies. |
Balises Entrez : String[] |
@() |
Les balises aident à la découverte de modules dans les galeries en ligne. Exemple : Tags = "PackageManagement", "PowerShell", "Manifest" |
LicenseUri Entrez : Uri |
<empty string> |
URL de la licence de ce module. Exemple : LicenseUri = 'https://www.contoso.com/license' |
ProjectUri Entrez : Uri |
<empty string> |
URL du site web principal de ce projet. Exemple : ProjectUri = 'https://www.contoso.com/project' |
IconUri Entrez : Uri |
<empty string> |
URL d’une icône représentant ce module. Exemple : IconUri = 'https://www.contoso.com/icons/icon.png' |
ReleaseNotes Entrez : String |
<empty string> |
Spécifie les notes de publication du module. Exemple : ReleaseNotes = 'The release notes provide information about the module. |
PreRelease Entrez : String |
<empty string> |
Ce paramètre a été ajouté dans PowerShellGet 1.6.6. Une chaîne PreRelease qui identifie le module en tant que version préliminaire dans les galeries en ligne. Exemple : PreRelease = 'alpha' |
RequireLicenseAcceptance Entrez : Boolean |
$false |
Ce paramètre a été ajouté dans PowerShellGet 1.5. Indicateur pour indiquer si le module nécessite l’acceptation explicite de l’utilisateur pour l’installation, la mise à jour ou l’enregistrement. Exemple : RequireLicenseAcceptance = $false |
ExternalModuleDependencies Entrez : String[] |
@() |
Ce paramètre a été ajouté dans PowerShellGet v2. Liste des modules externes dont dépend ce module. Exemple : ExternalModuleDependencies = @("ExtModule1", "ExtModule2", "ExtModule3") |
HelpInfoURI Entrez : String |
<empty string> |
URI HelpInfo de ce module. Exemple : HelpInfoURI = 'https://www.contoso.com/help' |
DefaultCommandPrefix Entrez : String |
<empty string> |
Préfixe par défaut pour les commandes exportées à partir de ce module. Remplacez le préfixe par défaut à l’aide de Import-Module -Prefix . Exemple : DefaultCommandPrefix = 'My' |
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.
#
# 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
- à_propos_des_opérateurs_de_comparaison
- about_If
- Cache global d'assemblages
- import-module
- New-ModuleManifest
- Test-ModuleManifest
- Update-ModuleManifest
- écrire un de module Windows PowerShell