New-Module
Crée un module dynamique qui existe uniquement en mémoire.
Syntaxe
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
remplacement des valeurs par défaut.
Vous pouvez également utiliser le paramètre AsCustomObject pour New-Module
renvoyer 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 rendre un module dynamique disponible Get-Module
, dirigez une New-Module
commande vers Import-Module ou dirigez l’objet de module qui New-Module
revient à 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 : Créer 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 Get-Module et 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 Export-ModuleMember
de 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 en Get-Module
pipi le module dynamique vers Import-Module
.
New-Module
crée un objet de module dirigé vers l’applet de Import-Module
commande. Le paramètre Name d’assigne New-Module
un nom convivial au module. Étant donné que Import-Module
ne retourne aucun objet par défaut, il n’existe aucune sortie de cette commande. Get-Module
que 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 affiche 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 pour New-Module
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 et Hello
Goodbye
. Le paramètre AsCustomObject crée un objet personnalisé au lieu de l’objet PSModuleInfo généré New-Module
par défaut. Cet objet personnalisé est enregistré dans la $m
variable.
La $m
variable semble ne pas avoir de 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 piping vers l’applet Get-Member
de $m
commande affiche les propriétés et méthodes de l’objet personnalisé. La sortie indique que l’objet a des méthodes de script qui représentent les fonctions et Goodbye
les Hello
fonctions.
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 de 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 passées au bloc de script. Pour plus d’informations sur le comportement d’ArgumentList, consultez about_Splatting.
Type: | Object[] |
Alias: | Args |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | 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, par exemple une fonction et une variable nommée A, un seul membre portant chaque nom est accessible à partir de l’objet personnalisé.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Cmdlet
Spécifie un tableau d’applets de commande que cette applet de commande exporte à partir du module dans 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 |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Function
Spécifie un tableau de fonctions que cette applet de commande exporte du module dans 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 |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | 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 un GUID qui spécifie le chemin d’accès du module dynamique.
Type: | String |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | 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 |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ScriptBlock
Spécifie le contenu du module dynamique. Placez le contenu dans les accolades ({}
) pour créer un bloc de script. Ce paramètre est obligatoire.
Type: | ScriptBlock |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez diriger un nom de module vers cette applet de commande.
Sorties
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 , cette applet de commande retourne le résultat de l’évaluation du bloc de script dans le module dynamique.
Notes
PowerShell inclut les alias suivants pour New-Module
:
- Toutes les plateformes :
nmo