New-Module
Crée un module dynamique qui existe uniquement en mémoire.
Syntax
New-Module
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
New-Module
[-Name] <String>
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Description
L’applet New-Module
de commande crée un module dynamique à partir d’un bloc de script. Les membres du module dynamique, tels des fonctions et des variables, sont immédiatement disponibles dans la session et restent disponibles jusqu'à la fermeture de la session.
Comme des modules statiques, les applets de commande et les fonctions figurant dans un module dynamique sont exportées par défaut, alors que les variables et les alias ne le sont pas. Toutefois, vous pouvez utiliser l’applet de commande Export-ModuleMember et les paramètres de New-Module
pour remplacer les valeurs par défaut.
Vous pouvez également utiliser le paramètre AsCustomObject de New-Module
pour retourner le module dynamique en tant qu’objet personnalisé. Les membres des modules, tels que les fonctions, sont implémentés en tant que méthodes de script de l'objet personnalisé au lieu d'être importés dans la session.
Les modules dynamiques existent uniquement en mémoire, pas sur le disque. Comme tous les modules, les membres des modules dynamiques s'exécutent dans une étendue de module privée qui est un enfant de l'étendue globale. Get-Module ne peut pas obtenir un module dynamique, mais Get-Command peut obtenir les membres exportés.
Pour mettre un module dynamique à Get-Module
la disposition de , dirigez une New-Module
commande vers Import-Module ou canalisez l’objet de module qui New-Module
retourne vers Import-Module
. Cette action ajoute le module dynamique à la liste de Get-Module
, mais elle n’enregistre pas le module sur le disque et ne le rend pas permanent.
Exemples
Exemple 1 : Create un module dynamique
Cet exemple crée un module dynamique avec une fonction appelée Hello
. La commande retourne un objet de module qui représente le nouveau module dynamique.
New-Module -ScriptBlock {function Hello {"Hello!"}}
Name : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Path : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
Exemple 2 : Utilisation de modules dynamiques et de Get-Module et de Get-Command
Cet exemple montre que les modules dynamiques ne sont pas retournés par l’applet de Get-Module
commande. Les membres qu’ils exportent sont retournés par l’applet de Get-Command
commande.
new-module -scriptblock {function Hello {"Hello!"}}
Name : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Path : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
Get-Module
Get-Command Hello
CommandType Name Definition
----------- ---- ----------
Function Hello "Hello!"
Exemple 3 : Exporter une variable dans la session active
Cet exemple utilise l’applet de Export-ModuleMember
commande pour exporter une variable dans la session active.
Sans la Export-ModuleMember
commande, seule la fonction est exportée.
New-Module -ScriptBlock {$SayHelloHelp="Type 'SayHello', a space, and a name."; function SayHello ($name) { "Hello, $name" }; Export-ModuleMember -function SayHello -Variable SayHelloHelp}
$SayHelloHelp
Type 'SayHello', a space, and a name.
SayHello Jeffrey
Hello, Jeffrey
La sortie indique que la variable et la fonction ont été exportées dans la session.
Exemple 4 : Rendre un module dynamique disponible pour Get-Module
Cet exemple montre que vous pouvez rendre un module dynamique disponible pour Get-Module
en dirigeant le module dynamique vers Import-Module
.
New-Module
crée un objet de module qui est dirigé vers l’applet de Import-Module
commande. Le paramètre Name de New-Module
attribue un nom convivial au module. Étant donné que Import-Module
ne retourne aucun objet par défaut, cette commande ne génère aucune sortie. Get-Module
que le GreetingModule a été importé dans la session active.
New-Module -ScriptBlock {function Hello {"Hello!"}} -name GreetingModule | Import-Module
Get-Module
Name : GreetingModule
Path : d54dfdac-4531-4db2-9dec-0b4b9c57a1e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
Get-Command hello
CommandType Name Definition
----------- ---- ----------
Function Hello "Hello!"
L’applet Get-Command
de commande montre la Hello
fonction que le module dynamique exporte.
Exemple 5 : Générer un objet personnalisé qui a des fonctions exportées
Cet exemple montre comment utiliser le paramètre AsCustomObject de New-Module
pour générer un objet personnalisé qui a des méthodes de script qui représentent les fonctions exportées.
L’applet New-Module
de commande crée un module dynamique avec deux fonctions, Hello
et Goodbye
. Le paramètre AsCustomObject crée un objet personnalisé au lieu de l’objet PSModuleInfo qui New-Module
génère par défaut. Cet objet personnalisé est enregistré dans la $m
variable.
La $m
variable semble n’avoir aucune valeur affectée.
$m = New-Module -ScriptBlock {
function Hello ($name) {"Hello, $name"}
function Goodbye ($name) {"Goodbye, $name"}
} -AsCustomObject
$m
$m | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Goodbye ScriptMethod System.Object Goodbye();
Hello ScriptMethod System.Object Hello();
$m.goodbye("Jane")
Goodbye, Jane
$m.hello("Manoj")
Hello, Manoj
La redirection $m
vers l’applet Get-Member
de commande affiche les propriétés et les méthodes de l’objet personnalisé. La sortie indique que l’objet a des méthodes de script qui représentent les Hello
fonctions et Goodbye
.
Enfin, nous appelons ces méthodes de script et affichons les résultats.
Exemple 6 : Obtenir les résultats du bloc de script
Cet exemple utilise le paramètre ReturnResult pour demander les résultats de l’exécution du bloc de script au lieu de demander un objet module. Le bloc de script dans le nouveau module définit la SayHello
fonction, puis appelle la fonction.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Paramètres
-ArgumentList
Spécifie un tableau d’arguments qui sont des valeurs de paramètre qui sont passées au bloc de script. Pour plus d’informations sur le comportement d’ArgumentList, consultez about_Splatting.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsCustomObject
Indique que cette applet de commande retourne un objet personnalisé qui représente le module dynamique. Les membres de module sont implémentés en tant que méthodes de script de l'objet personnalisé, mais ils ne sont pas importés dans la session. Vous pouvez enregistrer l'objet personnalisé dans une variable et utiliser la notation par points pour appeler les membres.
Si le module a plusieurs membres portant le même nom, tels qu’une fonction et une variable qui sont tous deux nommés A, un seul membre portant chaque nom est accessible à partir de l’objet personnalisé.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Cmdlet
Spécifie un tableau d’applets de commande que cette applet de commande exporte du module vers la session active. Entrez la liste des applets de commandes, séparées par des virgules. Les caractères génériques sont autorisés. Par défaut, toutes les applets de commande du module sont exportées.
Vous ne pouvez pas définir des applets de commande dans un bloc de script, mais un module dynamique peut inclure des applets de commande s'il importe les applets de commande à partir d'un module binaire.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Function
Spécifie un tableau de fonctions que cette applet de commande exporte du module vers la session active. Entrez la liste des fonctions, séparées par des virgules. Les caractères génériques sont autorisés. Par défaut, toutes les fonctions définies dans un module sont exportées.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Name
Spécifie un nom pour le nouveau module. Vous pouvez également diriger un nom de module vers New-Module.
La valeur par défaut est un nom généré automatiquement qui commence __DynamicModule_
par et est suivi d’un GUID qui spécifie le chemin d’accès du module dynamique.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ReturnResult
Indique que cette applet de commande exécute le bloc de script et retourne les résultats du bloc de script au lieu de renvoyer un objet de module.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptBlock
Spécifie le contenu du module dynamique. Placez le contenu dans des accolades ({}
) pour créer un bloc de script. Ce paramètre est obligatoire.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger un nom de module vers cette applet de commande.
Sorties
System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None
Cette applet de commande génère un objet PSModuleInfo , par défaut. Si vous utilisez le paramètre AsCustomObject , il génère un objet PSCustomObject . Si vous utilisez le paramètre ReturnResult , il retourne le résultat de l’évaluation du bloc de script dans le module dynamique.
Notes
Vous pouvez également faire référence à par New-Module
son alias, nmo
. Pour plus d’informations, consultez about_Aliases.