about_Module_Manifests
Description courte
Décrit les paramètres et les pratiques d’écriture de fichiers manifeste de module.
Description longue
Un manifeste de module est un fichier de données PowerShell (.psd1
) contenant une table de hachage.
Les paires clés-valeur dans la table de hachage décrivent le contenu et les attributs du module, définissent les prérequis et contrôlent la façon dont les composants sont traités.
Les manifestes ne sont pas requis pour charger un module, mais ils sont nécessaires pour publier un module dans PowerShell Gallery. Les manifestes vous permettent également de séparer l’implémentation de votre module de la façon dont il se charge. Avec un manifeste, vous pouvez définir des exigences, une compatibilité, un ordre de chargement, etc.
Lorsque vous utilisez New-ModuleManifest
sans spécifier de paramètres pour les paramètres du manifeste, il écrit un fichier manifeste minimal. L’extrait de code ci-dessous vous montre cette sortie par défaut, énipée de commentaires et d’espacement pour la concision :
@{
# RootModule = ''
ModuleVersion = '1.0'
# CompatiblePSEditions = @()
GUID = 'e7184b71-2527-469f-a50e-166b612dfb3b'
Author = 'username'
CompanyName = 'Unknown'
Copyright = '(c) 2022 username. All rights reserved.'
# Description = ''
# PowerShellVersion = ''
# PowerShellHostName = ''
# PowerShellHostVersion = ''
# DotNetFrameworkVersion = ''
# CLRVersion = ''
# ProcessorArchitecture = ''
# RequiredModules = @()
# RequiredAssemblies = @()
# ScriptsToProcess = @()
# TypesToProcess = @()
# FormatsToProcess = @()
# NestedModules = @()
FunctionsToExport = @()
CmdletsToExport = @()
VariablesToExport = '*'
AliasesToExport = @()
# DscResourcesToExport = @()
# ModuleList = @()
# FileList = @()
PrivateData = @{
PSData = @{
# Tags = @()
# LicenseUri = ''
# ProjectUri = ''
# IconUri = ''
# ReleaseNotes = ''
} # End of PSData hashtable
} # End of PrivateData hashtable
# HelpInfoURI = ''
# DefaultCommandPrefix = ''
}
Vous pouvez utiliser Test-ModuleManifest
pour valider un manifeste de module avant de publier votre module. Test-ModuleManifest
retourne une erreur si le manifeste n’est pas valide ou si le module ne peut pas être importé dans la session active, car la session ne répond pas aux exigences définies dans le manifeste.
Utilisation du code de script dans un manifeste de module
Les valeurs affectées aux paramètres dans le fichier manifeste peuvent être des expressions évaluées par PowerShell. Cela vous permet de construire des chemins d’accès et d’attribuer des valeurs conditionnellement en fonction de variables.
Lorsque vous importez un module à l’aide Import-Module
de , le manifeste est évalué en Restricted
mode langage. Restricted
le mode limite les commandes et les variables qui peuvent être utilisées.
Commandes autorisées
Import-LocalizedData
ConvertFrom-StringData
Write-Host
Out-Host
Join-Path
Variables autorisées
$PSScriptRoot
$PSEdition
$EnabledExperimentalFeatures
- Toutes les variables d’environnement, comme
$ENV:TEMP
Pour plus d’informations, consultez about_Language_Modes.
Paramètres du manifeste
Les sections suivantes détaillent tous les paramètres disponibles dans un manifeste de module et la façon dont vous pouvez les utiliser. Ils commencent par un synopsis du paramètre et sont suivis d’une matrice qui répertorie :
- Type d’entrée : type d’objet que vous pouvez spécifier pour ce paramètre dans le manifeste.
- Obligatoire : si cette valeur est
Yes
, le paramètre est nécessaire pour importer le module et le publier dans PowerShell Gallery. Si c’estNo
le cas, il n’est pas nécessaire pour ni l’un ni l’autre. Si c’est le cas, il n’estPowerShell Gallery
nécessaire que pour la publication dans PowerShell Gallery. - Valeur si non défini : la valeur de ce paramètre est importée et non définie explicitement.
- Accepte les caractères génériques : indique si ce paramètre peut prendre une valeur générique ou non.
RootModule
Ce paramètre spécifie le fichier principal ou racine du module. Lorsque le module est importé, les membres exportés par le fichier de module racine sont importés dans l’état de session de l’appelant.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
La valeur doit être le chemin d’accès à l’un des éléments suivants :
- un script (
.ps1
) - un module de script (
.psm1
) - un manifeste de module (
.psd1
) - un assembly (
.dll
) - un fichier XML de définition d’applet de commande (
.cdxml
) - un flux de travail Windows PowerShell 5.1 (
.xaml
)
Le chemin d’accès doit être relatif au manifeste du module.
Si aucun fichier racine n’a été désigné dans la clé RootModule , le manifeste devient le fichier principal du module et le module devient un module manifeste (ModuleType = Manifeste). Lorsque RootModule est défini, le type du module est déterminé à partir de l’extension de fichier utilisée :
- un ou
.psm1
un.ps1
fichier crée le script de type de module - un
.psd1
fichier rend le manifeste de type de module - un
.dll
fichier rend le type de module Binary - un
.cdxml
fichier rend le type de module CIM - un
.xaml
fichier rend le flux de travail du type de module
Par défaut, tous les membres du module dans RootModule sont exportés.
Conseil
La vitesse de chargement du module diffère entre les types de modules Binary, Script et CIM . Pour plus d’informations, consultez considérations relatives à la création de modules PowerShell
Par exemple, le ModuleType de ce module est Manifest. Les seuls membres de module que ce module peut exporter sont ceux définis dans les modules spécifiés avec le paramètre NestedModules .
@{
RootModule = ''
}
Remarque
Ce paramètre peut également être spécifié dans les manifestes de module en tant que ModuleToProcess. Bien que ce nom de ce paramètre soit valide, il est recommandé d’utiliser RootModule à la place.
ModuleVersion
Ce paramètre spécifie la version du module. Quand plusieurs versions d’un module existent sur un système, la dernière version est chargée par défaut lorsque vous exécutez Import-Module
.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Oui |
Valeur si unset n’est pas défini | Aucune |
Accepte les caractères génériques | Non |
La valeur de ce paramètre doit être convertible System.Version
au moment de l’exécution Import-Module
.
Par exemple, ce manifeste déclare la version du module en tant que '1.2.3'
.
@{
ModuleVersion = '1.2.3'
}
Lorsque vous importez le module et inspectez la propriété Version , notez qu’il s’agit d’un objet System.Version et non d’une chaîne :
$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major Minor Build Revision
----- ----- ----- --------
1 2 3 -1
Version
CompatiblePSEditions
Ce paramètre spécifie les PSEditions compatibles du module.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Valeurs acceptées | Desktop , Core |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Si la valeur de ce paramètre est $null
, le module peut être importé quel que soit l’élément PSEdition de la session. Vous pouvez le définir sur une ou plusieurs des valeurs acceptées.
Pour plus d’informations sur PSEdition, consultez :
Lorsque ce paramètre est défini, le module peut uniquement être importé dans une session où la valeur de la $PSEdition
variable automatique est incluse dans le paramètre.
Remarque
Étant donné que la variable automatique a été introduite dans la $PSEdition
version 5.1, les versions antérieures de Windows PowerShell ne peuvent pas charger un module qui utilise le paramètre CompatiblePSEditions .
Par exemple, vous pouvez importer ce manifeste de module dans n’importe quelle session :
@{
# CompatiblePSEditions = @()
}
Avec le paramètre spécifié, ce module ne peut être importé que dans les sessions où la valeur de la $PSEdition
variable automatique est Core
.
@{
CompatiblePSEditions = @('Core')
}
GUID
Ce paramètre spécifie un identificateur unique pour le module. Le GUID est utilisé pour faire la distinction entre les modules portant le même nom.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | 00000000-0000-0000-0000-000000000000 |
Accepte les caractères génériques | Non |
La valeur de ce paramètre doit être convertible System.Guid
au moment de l’exécution Import-Module
.
Attention
Bien qu’il ne s’agit pas d’un paramètre obligatoire, la spécification d’un GUID dans un manifeste n’a aucun avantage et peut entraîner des collisions de noms pour les modules.
Vous pouvez créer un guid à utiliser dans votre manifeste :
New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}
S’il existe un autre module sur l’ordinateur portant le même nom, vous pouvez toujours importer celui souhaité en spécifiant le nom complet du module :
Import-Module -FullyQualifiedName @{
ModuleName = 'Example'
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
ModuleVersion = '1.0.0'
}
Auteur
Ce paramètre identifie l’auteur du module.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | PowerShell Gallery |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Ce manifeste déclare que l’auteur du module est l’équipe d’expérience des développeurs Contoso.
@{
Author = 'Contoso Developer Experience Team'
}
CompanyName
Ce paramètre identifie l’entreprise ou le fournisseur qui a créé le module.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Ce manifeste déclare que le module a été créé par Contoso, Ltd.
@{
CompanyName = 'Contoso, Ltd.'
}
Copyright
Ce paramètre spécifie une instruction de copyright pour le module.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Ce manifeste déclare une déclaration de copyright réservant tous les droits à Contoso, Ltd. à compter de 2022.
@{
Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}
Description
Ce paramètre décrit le module à un niveau élevé.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | PowerShell Gallery |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Ce manifeste inclut une brève description. Vous pouvez également utiliser une chaîne ici pour écrire une description plus longue ou multiligne.
@{
Description = 'Example commands to show a valid module manifest'
}
PowerShellVersion
Ce paramètre spécifie la version minimale de PowerShell requise par ce module.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
La valeur de ce paramètre doit être convertible System.Version
au moment de l’exécution Import-Module
.
Si ce paramètre n’est pas défini, PowerShell ne limite pas l’importation du module en fonction de la version actuelle.
Par exemple, ce manifeste déclare que le module est compatible avec chaque version de PowerShell et Windows PowerShell.
@{
# PowerShellVersion = ''
}
Avec PowerShellVersion défini 7.2
sur , vous pouvez uniquement importer le module dans PowerShell 7.2 ou version ultérieure.
@{
PowerShellVersion = '7.2'
}
PowerShellHostName
Ce paramètre spécifie le nom du programme hôte PowerShell requis par le module, tel que l’hôte Windows PowerShell ISE ou ConsoleHost.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Vous trouverez le nom de l’hôte pour une session avec l’instruction $Host.Name
. Par exemple, vous pouvez voir que l’hôte d’une session distante est ServerRemoteHost au lieu de ConsoleHost :
$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost
Ce module peut être importé dans n’importe quel hôte.
@{
# PowerShellHostName = ''
}
Avec PowerShellHostName défini sur ServerRemoteHost
, vous ne pouvez importer le module que dans une session PowerShell distante.
@{
PowerShellHostName = 'ServerRemoteHost'
}
PowerShellHostVersion
Ce paramètre spécifie la version minimale d’un programme hôte PowerShell requis par le module.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
La valeur de ce paramètre doit être convertible System.Version
au moment de l’exécution Import-Module
.
Attention
Bien que ce paramètre puisse être utilisé sans le paramètre PowerShellHostName , il augmente les chances de comportement inattendu. Utilisez ce paramètre uniquement lorsque vous utilisez également le paramètre PowerShellHostName .
Par exemple, le module de ce manifeste peut être importé à partir de n’importe quelle session PowerShell s’exécutant dans ConsoleHost, quelle que soit la version de l’hôte.
@{
PowerShellHostName = 'ConsoleHost'
# PowerShellHostVersion = ''
}
Avec PowerShellHostVersion défini 5.1
sur , vous ne pouvez importer le module qu’à partir de n’importe quelle session PowerShell exécutée dans ConsoleHost où la version de l’hôte est 5.1 ou ultérieure.
@{
PowerShellHostName = 'ConsoleHost'
PowerShellHostVersion = '5.1'
}
DotNetFrameworkVersion
Ce paramètre spécifie la version minimale de Microsoft .NET Framework requise par le module.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Remarque
Ce paramètre est valide pour l’édition PowerShell Desktop uniquement, comme Windows PowerShell 5.1, et s’applique uniquement aux versions de .NET Framework inférieures à 4.5. Cette exigence n’a aucun effet sur les versions plus récentes de PowerShell ou de .NET Framework.
La valeur de ce paramètre doit être convertible System.Version
au moment de l’exécution Import-Module
.
Par exemple, ce manifeste déclare que son module peut être importé dans n’importe quelle session PowerShell ou Windows PowerShell, quelle que soit la version de Microsoft .NET Framework.
@{
# DotNetFrameworkVersion = ''
}
Avec DotNetFrameworkVersion défini 4.0
sur , vous pouvez importer ce module dans n’importe quelle session de Windows PowerShell où la dernière version disponible de Microsoft .NET Framework est au moins 4.0. Vous pouvez également l’importer dans n’importe quelle session PowerShell.
@{
DotNetFrameworkVersion = '4.0'
}
CLRVersion
Ce paramètre spécifie la version minimale du Common Language Runtime (CLR) du Microsoft .NET Framework requis par le module.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Remarque
Ce paramètre est valide pour l’édition PowerShell Desktop uniquement, comme Windows PowerShell 5.1, et s’applique uniquement aux versions de .NET Framework inférieures à 4.5. Cette exigence n’a aucun effet sur les versions plus récentes de PowerShell ou de .NET Framework.
La valeur de ce paramètre doit être convertible System.Version
au moment de l’exécution Import-Module
.
Par exemple, ce manifeste déclare que son module peut être importé dans n’importe quelle session PowerShell ou Windows PowerShell, quelle que soit la version de la version CLR de Microsoft .NET Framework.
@{
# CLRVersion = ''
}
Avec CLRVersion défini 4.0
sur , vous pouvez importer ce module dans n’importe quelle session de Windows PowerShell où la dernière version disponible du CLR est au moins 4.0. Vous pouvez également l’importer dans n’importe quelle session PowerShell.
@{
CLRVersion = '4.0'
}
ProcessorArchitecture
Ce paramètre spécifie l’architecture du processeur requise par le module.
Valeur | |
---|---|
Type d’entrée | System.String |
Valeurs acceptées | None , , MSIL , IA64 X86 , , Amd64 Arm |
Obligatoire | Non |
Valeur si unset n’est pas défini | None |
Accepte les caractères génériques | Non |
La valeur de ce paramètre doit être convertible System.Reflection.ProcessorArchitecture
au moment de l’exécution Import-Module
.
Par exemple, ce manifeste déclare que son module peut être importé dans n’importe quelle session, quelle que soit l’architecture du processeur du système.
@{
# ProcessorArchitecture = ''
}
Avec ProcessorArchitecture défini Amd64
sur , vous ne pouvez importer ce module que dans une session s’exécutant sur un ordinateur avec une architecture correspondante.
@{
ProcessorArchitecture = 'Amd64'
}
RequiredModules
Ce paramètre spécifie les modules qui doivent être dans l’état de session globale. Si les modules requis ne sont pas dans l’état de session global, PowerShell les importe.
Si les modules requis ne sont pas disponibles, la Import-Module
commande échoue.
Valeur | |
---|---|
Type d’entrée | System.String[] , System.Collections.Hashtable[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Les entrées de ce paramètre peuvent être un nom de module, une spécification complète du module ou un chemin d’accès à un fichier de module.
Lorsque la valeur est un chemin d’accès, le chemin d’accès peut être qualifié ou relatif complet.
Lorsque la valeur est un nom ou une spécification de module, PowerShell recherche PSModulePath pour le module spécifié.
Une spécification de module est une table de hachage qui a les clés suivantes.
ModuleName
- Obligatoire. Spécifie le nom du module.GUID
- Facultatif. Spécifie le GUID du module.- Il est également nécessaire de spécifier au moins l’une des trois clés ci-dessous. La
RequiredVersion
clé ne peut pas être utilisée avec les clés ouMaximumVersion
lesModuleVersion
clés. Vous pouvez définir une plage de versions acceptable pour le module en spécifiant ensemble les clés etMaximumVersion
lesModuleVersion
clés.ModuleVersion
- Spécifie une version minimale acceptable du module.RequiredVersion
- Spécifie une version exacte et requise du module.MaximumVersion
- Spécifie la version maximale acceptable du module.
Remarque
RequiredVersion
a été ajouté dans Windows PowerShell 5.0.
MaximumVersion
a été ajouté dans Windows PowerShell 5.1.
Par exemple, ce manifeste déclare que son module ne nécessite aucun autre module pour ses fonctionnalités.
@{
# RequiredModules = @()
}
Ce manifeste déclare qu’il requiert le module PSReadLine. Lorsque vous exécutez Import-Module
ce manifeste, PowerShell importe la dernière version de PSReadLine disponible pour la session. Si aucune version n’est disponible, l’importation retourne une erreur.
@{
RequiredModules = @(
'PSReadLine'
)
}
Conseil
Dans PowerShell 2.0, Import-Module
n’importe pas automatiquement les modules requis. Il vérifie uniquement que les modules requis sont dans l’état de session global.
Ce manifeste déclare qu’il nécessite une version du module PSReadLine fournisseur dans son propre dossier de module. Lorsque vous exécutez Import-Module
ce manifeste, PowerShell importe le PSReadLine fournisseur à partir du chemin spécifié.
@{
RequiredModules = @(
'Vendored\PSReadLine\PSReadLine.psd1'
)
}
Ce manifeste déclare qu’il nécessite spécifiquement la version 2.0.0 du module PSReadLine. Lorsque vous exécutez Import-Module
ce manifeste, PowerShell importe la version 2.0.0 de PSReadLine si elle est disponible. S’il n’est pas disponible, Import-Module
retourne une erreur.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
RequiredVersion = '2.0.0'
}
)
}
Ce manifeste déclare qu’il exige que le module PSReadLine soit importé à la version 2.0.0 ou ultérieure.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
ModuleVersion = '2.0.0'
}
)
}
Ce manifeste déclare qu’il exige que le module PSReadLine soit importé à la version 2.0.0 ou inférieure.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
MaximumVersion = '2.0.0'
}
)
}
Ce manifeste déclare qu’il exige que le module PSDesiredStateConfiguration soit importé à une version égale ou supérieure à 2.0.0, mais pas supérieure à 2.99.99.
@{
RequiredModules = @(
@{
ModuleName = 'PSDesiredStateConfiguration'
ModuleVersion = '2.0.0'
MaximumVersion = '2.99.99'
}
)
}
RequiredAssemblies
Ce paramètre spécifie les fichiers d’assembly (.dll
) requis par le module.
PowerShell charge les assemblys spécifiés avant de mettre à jour des types ou des formats, importer des modules imbriqués ou importer le fichier de module spécifié dans la valeur de la clé RootModule .
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Les entrées de ce paramètre peuvent être le nom de fichier d’un assembly ou le chemin d’accès à un. Répertoriez tous les assemblys requis, même s’ils sont également répertoriés en tant que modules binaires dans le paramètre NestedModules .
Ce manifeste nécessite l’assembly example.dll
. Avant de charger des fichiers de mise en forme ou de type spécifiés dans ce manifeste, PowerShell se charge example.dll
à partir du Assemblies
dossier situé dans le même répertoire que le manifeste du module.
@{
RequiredAssemblies = @(
'Assemblies\Example.dll'
)
}
ScriptsToProcess
Ce paramètre spécifie les fichiers de script (.ps1
) qui s’exécutent dans l’état de session de l’appelant lorsque le module est importé. Vous pouvez utiliser ces scripts pour préparer un environnement, tout comme vous pouvez utiliser un script de connexion.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Pour spécifier des scripts qui s’exécutent dans l’état de session du module, utilisez la clé NestedModules .
Lorsque vous importez ce manifeste, PowerShell exécute la Initialize.ps1
session active.
@{
ScriptsToProcess = @(
'Scripts\Initialize.ps1'
)
}
Par exemple, si vous Initialize.ps1
écrivez des messages d’information et définissez la $ExampleState
variable :
if ([string]::IsNullOrEmpty($ExampleState)) {
Write-Information "Example not initialized."
Write-Information "Initializing now..."
$ExampleState = 'Initialized'
} else {
Write-Information "Example already initialized."
}
Lorsque vous importez le module, le script s’exécute, en écrivant ces messages et en définissant $ExampleState
dans votre session.
$InformationPreference = 'Continue'
"Example State is: $ExampleState"
Import-Module .\example7x.psd1
"Example State is: $ExampleState"
Import-Module .\example7x.psd1 -Force
Example State is:
Example not initialized.
Initializing now...
Example State is: Initialized
Example already initialized.
TypesToProcess
Ce paramètre spécifie les fichiers de type (.ps1xml
) qui s’exécutent lorsque le module est importé.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Lorsque vous importez le module, PowerShell exécute l’applet Update-TypeData
de commande avec les fichiers spécifiés. Étant donné que les fichiers de type ne sont pas délimités, ils affectent tous les états de session de la session.
Pour plus d’informations sur les fichiers de type, consultez about_Types.ps1xml
Par exemple, lorsque vous importez ce manifeste, PowerShell charge les types spécifiés dans le fichier à partir du Example.ps1xml
Types
dossier situé dans le même répertoire que le manifeste du module.
@{
TypesToProcess = @(
'Types\Example.ps1xml'
)
}
FormatsToProcess
Ce paramètre spécifie les fichiers de mise en forme (.ps1xml
) qui s’exécutent lorsque le module est importé.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Lorsque vous importez un module, PowerShell exécute l’applet Update-FormatData
de commande avec les fichiers spécifiés. Étant donné que les fichiers de mise en forme ne sont pas limités, ils affectent tous les états de session de la session.
Pour plus d’informations sur les fichiers de type, consultez about_Format.ps1xml
Par exemple, lorsque vous importez ce module, PowerShell charge les formats spécifiés dans le fichier à partir du Example.ps1xml
Formats
dossier situé dans le même répertoire que le manifeste du module.
@{
FormatsToProcess = @(
'Formats\Example.ps1xml'
)
}
NestedModules
Ce paramètre spécifie les modules de script (.psm1
) et les modules binaires (.dll
) importés dans l’état de session du module. Vous pouvez également spécifier des fichiers de script (.ps1
). Les fichiers de ce paramètre s’exécutent dans l’ordre dans lequel ils sont répertoriés.
Valeur | |
---|---|
Type d’entrée | System.String[] , System.Collections.Hashtable[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Les entrées de ce paramètre peuvent être un nom de module, une spécification complète du module ou un chemin d’accès à un fichier de module ou de script.
Lorsque la valeur est un chemin d’accès, le chemin d’accès peut être qualifié ou relatif complet.
Lorsque la valeur est un nom de module ou une spécification, PowerShell recherche PSModulePath pour le module spécifié.
Une spécification de module est une table de hachage qui a les clés suivantes.
ModuleName
- Obligatoire. Spécifie le nom du module.GUID
- Facultatif. Spécifie le GUID du module.- Il est également nécessaire de spécifier au moins l’une des trois clés ci-dessous. La
RequiredVersion
clé ne peut pas être utilisée avec les clés ouMaximumVersion
lesModuleVersion
clés. Vous pouvez définir une plage de versions acceptable pour le module en spécifiant ensemble les clés etMaximumVersion
lesModuleVersion
clés.ModuleVersion
- Spécifie une version minimale acceptable du module.RequiredVersion
- Spécifie une version exacte et requise du module.MaximumVersion
- Spécifie la version maximale acceptable du module.
Remarque
RequiredVersion
a été ajouté dans Windows PowerShell 5.0.
MaximumVersion
a été ajouté dans Windows PowerShell 5.1.
Tous les éléments qui doivent être exportés à partir d’un module imbriqué doivent être exportés par le module imbriqué à l’aide de l’applet Export-ModuleMember
de commande ou répertoriés dans l’une des propriétés d’exportation :
- FunctionsToExport
- CmdletsToExport
- VariablesToExport
- AliasesToExport
Les modules imbriqués dans l’état de session du module sont disponibles pour le module racine, mais ils ne sont pas retournés par une Get-Module
commande dans l’état de session de l’appelant.
.ps1
Les scripts () répertoriés dans ce paramètre sont exécutés dans l’état de session du module, et non dans l’état de session de l’appelant. Pour exécuter un script dans l’état de session de l’appelant, répertoriez le nom de fichier du script dans le paramètre ScriptsToProcess .
Par exemple, lorsque vous importez ce manifeste, le Helpers.psm1
module est chargé dans l’état de session du module racine. Les applets de commande déclarées dans le module imbriqué sont exportées, sauf restriction contraire.
@{
NestedModules = @(
'Helpers\Helpers.psm1'
)
}
FunctionsToExport
Ce paramètre spécifie les fonctions que le module exporte. Vous pouvez utiliser ce paramètre pour restreindre les fonctions exportées par le module. Elle peut supprimer des fonctions de la liste des fonctions exportées, mais elle ne peut pas ajouter de fonctions à la liste.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Oui |
Vous pouvez spécifier des entrées dans ce paramètre avec des caractères génériques. Toutes les fonctions correspondantes dans la liste des fonctions exportées sont exportées.
Conseil
Pour des performances et une détectabilité, vous devez toujours répertorier explicitement les fonctions que vous souhaitez exporter dans ce paramètre sans utiliser de caractères génériques.
Par exemple, lorsque vous importez un module avec le paramètre commenté, toutes les fonctions du module racine et tous les modules imbriqués sont exportées.
@{
# FunctionsToExport = @()
}
Ce manifeste est fonctionnellement identique à ne pas spécifier le paramètre du tout.
@{
FunctionsToExport = '*'
}
Avec FunctionsToExport défini comme tableau vide, lorsque vous importez ce module, aucune fonction n’est disponible pour le module racine ou toute exportation de modules imbriqués.
@{
FunctionsToExport = @()
}
Remarque
Si vous créez votre manifeste de module avec la New-ModuleManifest
commande et que vous ne spécifiez pas le paramètre FunctionsToExport , le manifeste créé a ce paramètre spécifié comme tableau vide. Sauf si vous modifiez le manifeste, aucune fonction du module n’est exportée.
Avec FunctionsToExport défini pour inclure uniquement la Get-Example
fonction, lorsque vous importez ce module, seule la Get-Example
fonction est disponible, même si d’autres fonctions ont été exportées par le module racine ou les modules imbriqués.
@{
FunctionsToExport = @(
'Get-Example'
)
}
Avec FunctionsToExport défini avec une chaîne générique, lorsque vous importez ce module toute fonction dont le nom se Example
termine est disponible, même si d’autres fonctions ont été exportées en tant que membres de module par le module racine ou tous les modules imbriqués.
@{
FunctionsToExport = @(
'*Example'
)
}
CmdletsToExport
Ce paramètre spécifie les applets de commande que le module exporte. Vous pouvez utiliser ce paramètre pour restreindre les applets de commande exportées par le module. Il peut supprimer des applets de commande de la liste des membres de module exportés, mais elle ne peut pas ajouter d’applets de commande à la liste.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Oui |
Vous pouvez spécifier des entrées dans ce paramètre avec des caractères génériques. Toutes les applets de commande correspondantes dans la liste des applets de commande exportées sont exportées.
Conseil
Pour des performances et une détectabilité, vous devez toujours répertorier explicitement les applets de commande que vous souhaitez exporter dans ce paramètre sans utiliser de caractères génériques.
Par exemple, lorsque vous importez un module avec ce paramètre commenté, toutes les applets de commande du module racine et tous les modules imbriqués sont exportées.
@{
# CmdletsToExport = @()
}
Ce manifeste est fonctionnellement identique à ne pas spécifier le paramètre du tout.
@{
CmdletsToExport = '*'
}
Avec cmdletsToExport définis comme tableau vide, lorsque vous importez ce module, aucune applet de commande n’est disponible pour le module racine ou les modules imbriqués exportés.
@{
CmdletsToExport = @()
}
Remarque
Si vous créez votre manifeste de module avec la New-ModuleManifest
commande et que vous ne spécifiez pas le paramètre CmdletsToExport , le manifeste créé a ce paramètre spécifié comme tableau vide. Sauf si vous modifiez le manifeste, aucune applet de commande du module n’est exportée.
Avec CmdletsToExport défini pour inclure uniquement l’applet Get-Example
de commande, lorsque vous importez ce module uniquement, l’applet Get-Example
de commande est rendue disponible, même si d’autres applets de commande ont été exportées par le module racine ou les modules imbriqués.
@{
CmdletsToExport = @(
'Get-Example'
)
}
Avec cmdletsToExport défini avec une chaîne générique, lorsque vous importez ce module, toute applet de commande dont le nom se Example
termine est disponible, même si d’autres applets de commande ont été exportées en tant que membres de module par le module racine ou tous les modules imbriqués.
@{
CmdletsToExport = @(
'*Example'
)
}
VariablesToExport
Ce paramètre spécifie les variables que le module exporte. Vous pouvez utiliser ce paramètre pour restreindre les variables exportées par le module. Elle peut supprimer des variables de la liste des membres de module exportés, mais elle ne peut pas ajouter de variables à la liste.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Oui |
Vous pouvez spécifier des entrées dans ce paramètre avec des caractères génériques. Toutes les variables correspondantes dans la liste des membres de module exportés sont exportées.
Conseil
Pour des performances et une détectabilité, vous devez toujours répertorier explicitement les variables que votre module doit exporter dans ce paramètre sans utiliser de caractères génériques.
Par exemple, lorsque vous importez un module avec ce paramètre commenté, toutes les variables du module racine et tous les modules imbriqués sont exportés.
@{
# VariablesToExport = @()
}
Ce manifeste est fonctionnellement identique à ne pas spécifier le paramètre du tout.
@{
VariablesToExport = '*'
}
Remarque
Si vous créez votre manifeste de module avec la New-ModuleManifest
commande et que vous ne spécifiez pas le paramètre VariablesToExport , le manifeste créé a ce paramètre spécifié comme '*'
. Sauf si vous modifiez le manifeste, toutes les variables du module sont exportées.
Avec VariablesToExport défini comme tableau vide, lorsque vous importez ce module, aucune variable n’est disponible pour le module racine ou les modules imbriqués exportés.
@{
VariablesToExport = @()
}
Avec VariablesToExport défini pour inclure uniquement la SomeExample
variable, lorsque vous importez ce module uniquement, seule la $SomeExample
variable est disponible, même si d’autres variables ont été exportées par le module racine ou les modules imbriqués.
@{
VariablesToExport = @(
'SomeExample'
)
}
Avec VariablesToExport défini avec une chaîne générique, lorsque vous importez ce module toute variable dont le nom se Example
termine par est disponible, même si d’autres variables ont été exportées en tant que membres de module par le module racine ou tous les modules imbriqués.
@{
VariablesToExport = @(
'*Example'
)
}
DscResourcesToExport
Ce paramètre spécifie les ressources DSC que le module exporte. Vous pouvez utiliser ce paramètre pour restreindre les ressources DSC basées sur la classe exportées par le module. Il peut supprimer des ressources DSC de la liste des membres de module exportés, mais il ne peut pas ajouter de ressources DSC à la liste.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Oui |
Vous pouvez spécifier des entrées dans ce paramètre avec des caractères génériques. Toutes les ressources DSC basées sur des classes correspondantes dans le module sont exportées.
Conseil
Pour la détectabilité, vous devez toujours répertorier explicitement toutes les ressources DSC que votre module exporte.
Pour plus d’informations sur la création et l’utilisation de ressources DSC, consultez la documentation relative à DSC.
Ce manifeste exporte toutes les ressources DSC basées sur des classes et MOF définies dans le module racine et tous les modules imbriqués.
@{
# DscResourcesToExport = @()
}
Ce manifeste exporte toutes les ressources DSC basées sur MOF définies dans le module racine et tous les modules imbriqués, mais une seule ressource DSC basée sur une classe. ExampleClassResource
@{
DscResourcesToExport = @(
'ExampleClassResource'
)
}
Ce manifeste exporte toutes les ressources DSC qu’elle inclut. Même si la ressource MOF n’était pas répertoriée, le module l’exporterait toujours.
@{
DscResourcesToExport = @(
'ExampleClassResource'
'ExampleMofResourceFirst'
)
}
ModuleList
Ce paramètre est une liste d’inventaire informationnel des modules inclus dans celui-ci. Cette liste n’affecte pas le comportement du module.
Valeur | |
---|---|
Type d’entrée | System.String[] , System.Collections.Hashtable[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Les entrées de ce paramètre peuvent être un nom de module, une spécification complète du module ou un chemin d’accès à un fichier de module ou de script.
Lorsque la valeur est un chemin d’accès, le chemin d’accès peut être qualifié ou relatif complet.
Lorsque la valeur est un nom de module ou une spécification, PowerShell recherche PSModulePath pour le module spécifié.
Une spécification de module est une table de hachage qui a les clés suivantes.
ModuleName
- Obligatoire. Spécifie le nom du module.GUID
- Facultatif. Spécifie le GUID du module.- Il est également nécessaire de spécifier au moins l’une des trois clés ci-dessous. La
RequiredVersion
clé ne peut pas être utilisée avec les clés ouMaximumVersion
lesModuleVersion
clés. Vous pouvez définir une plage de versions acceptable pour le module en spécifiant ensemble les clés etMaximumVersion
lesModuleVersion
clés.ModuleVersion
- Spécifie une version minimale acceptable du module.RequiredVersion
- Spécifie une version exacte et requise du module.MaximumVersion
- Spécifie la version maximale acceptable du module.
Remarque
RequiredVersion
a été ajouté dans Windows PowerShell 5.0.
MaximumVersion
a été ajouté dans Windows PowerShell 5.1.
Ce manifeste ne fournit pas de liste d’informations des modules qu’il inclut. Il peut ou non avoir des modules. Même si ce paramètre n’est pas spécifié, les modules répertoriés dans les paramètres RootModule, ScriptsToProcess ou NestedModules se comportent toujours normalement.
@{
# ModuleList = @()
}
Ce manifeste déclare que les seuls modules qu’il inclut sont Example.psm1
et les sous-modules First.psm1
et Second.psm1
dans le Submodules
dossier.
@{
ModuleList = @(
'Example.psm1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
FileList
Ce paramètre est une liste d’inventaire informationnel des fichiers inclus dans ce module. Cette liste n’affecte pas le comportement du module.
Valeur | |
---|---|
Type d’entrée | System.String[] |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Oui |
Les entrées de ce paramètre doivent être le chemin relatif d’un fichier à partir du dossier contenant le manifeste du module.
Lorsqu’un utilisateur appelle Get-Module
un manifeste avec ce paramètre défini, la propriété FileList contient le chemin complet de ces fichiers, en joignant le chemin d’accès du module avec le chemin relatif de chaque entrée.
Ce manifeste n’inclut pas de liste de ses fichiers.
@{
# FileList = @()
}
Ce manifeste déclare que les seuls fichiers qu’il inclut sont répertoriés dans ce paramètre.
@{
FileList = @(
'Example.psd1'
'Example.psm1'
'Assemblies\Example.dll'
'Scripts\Initialize.ps1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
PrivateData
Ce paramètre définit une table de hachage de données disponible pour toutes les commandes ou fonctions dans l’étendue du module racine.
Valeur | |
---|---|
Type d’entrée | System.Collections.Hashtable |
Obligatoire | PowerShell Gallery, Crescendo |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Lorsque vous exportez un manifeste Crescendo pour créer un module, Export-CrescendoModule
ajoute deux clés à PrivateData
- CrescendoGenerated - timestamp lorsque le module a été exporté
- CrescendoVersion : version de Crescendo utilisée pour exporter le module
Vous pouvez ajouter vos propres clés pour contenir les métadonnées que vous souhaitez suivre. Toutes les clés ajoutées à ce paramètre sont disponibles pour les fonctions et les applets de commande dans le module racine à l’aide $MyInvocation.MyCommand.Module.PrivateData
de . La table de hachage n’est pas disponible dans l’étendue du module elle-même, uniquement dans les applets de commande que vous définissez dans le module.
Par exemple, ce manifeste définit la clé PublishedDate dans PrivateData.
@{
PrivateData = @{
PublishedDate = '2022-06-01'
}
}
Les applets de commande du module peuvent accéder à cette valeur avec la $MyInvocation
variable.
Function Get-Stale {
[CmdletBinding()]
param()
$PublishedDate = $MyInvocation.MyCommand.Module.PrivateData.PublishedDate
$CurrentDate = Get-Date
try {
$PublishedDate = Get-Date -Date $PublishedDate -ErrorAction Stop
} catch {
# The date was set in the manifest, set to an invalid value, or
# the script module was directly imported without the manifest.
Throw "Unable to determine published date. Check the module manifest."
}
if ($CurrentDate -gt $PublishedDate.AddDays(30)) {
Write-Warning "This module version was published more than 30 days ago."
} else {
$TimeUntilStale = $PublishedDate.AddDays(30) - $CurrentDate
"This module will be stale in $($TimeUntilStale.Days) days"
}
}
Une fois le module importé, la fonction utilise la valeur de PrivateData pour déterminer quand le module a été publié.
Get-Stale -TestDate '2022-06-15'
Get-Stale -TestDate '2022-08-01'
This module will be stale in 16 days
WARNING: This module version was published more than 30 days ago.
PrivateData.PSData
La propriété enfant PSData définit une table de hachage de valeurs qui prend en charge des scénarios d’extension spécifiques.
Valeur | |
---|---|
Type d’entrée | System.Collections.Hashtable |
Obligatoire | PowerShell Gallery, fonctionnalités expérimentales, modules Crescendo |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
La propriété enfant PSData est utilisée pour les scénarios suivants :
- PowerShell Gallery : lorsque vous créez un manifeste de module à l’aide
New-ModuleManifest
de l’applet de commande préremplit la table de hachage PSData avec des clés de place qui sont nécessaires lors de la publication du module dans PowerShell Gallery. Pour plus d’informations sur les manifestes de module et la publication dans PowerShell Gallery, consultez les valeurs du manifeste de package qui ont un impact sur l’interface utilisateur de PowerShell Gallery. - Modules Crescendo : lorsque vous exportez un manifeste Crescendo pour créer un module,
Export-CrescendoModule
ajoute la valeurCrescendoBuilt
à la propriété PSData.Tags . Vous pouvez utiliser cette balise pour rechercher des modules dans PowerShell Gallery qui ont été créés à l’aide de Crescendo. Pour plus d’informations, consultez Export-CrescendoModule.
HelpInfoURI
Ce paramètre spécifie l’adresse Internet du fichier XML HelpInfo pour le module.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
La valeur de ce paramètre doit être un URI (Uniform Resource Identifier) qui commence par http ou https.
Le fichier XML HelpInfo prend en charge la fonctionnalité d’aide pouvant être mise à jour qui a été introduite dans PowerShell 3.0. Il contient des informations sur l'emplacement des fichiers d'aide téléchargeables pour le module, et les numéros de version des fichiers d'aide les plus récents pour chacun des paramètres régionaux pris en charge.
Pour plus d’informations sur l’aide pouvant être mise à jour, consultez about_Updatable_Help. Pour plus d’informations sur le fichier XML HelpInfo, consultez Prise en charge de l’aide pouvant être mise à jour.
Par exemple, ce module prend en charge l’aide pouvant être mise à jour.
@{
HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}
DefaultCommandPrefix
Ce paramètre spécifie un préfixe qui est ajouté aux noms de toutes les commandes du module lorsqu’elles sont importées dans une session. Les préfixes permettent d’empêcher les conflits de noms de commandes dans la session d’un utilisateur.
Valeur | |
---|---|
Type d’entrée | System.String |
Obligatoire | Non |
Valeur si unset n’est pas défini | $null |
Accepte les caractères génériques | Non |
Les utilisateurs de module peuvent remplacer ce préfixe en spécifiant le paramètre Préfixe de l’applet Import-Module
de commande.
Ce paramètre a été introduit dans PowerShell 3.0.
Lorsque ce manifeste est importé, toutes les applets de commande importées à partir de ce module ont Example
été ajoutées au nom de leur nom. Par exemple, Get-Item
est importé en tant que Get-ExampleItem
.
@{
DefaultCommandPrefix = 'Example'
}