Crée un module dynamique qui existe uniquement en mémoire.
Syntaxe
New-Module [-Name] <string> [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<CommonParameters>] New-Module [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<CommonParameters>]
Description
L'applet de commande New-Module crée un module dynamique à partir d'un bloc de script. Les membres du module dynamique, tels que les fonctions et les variables, sont immédiatement disponibles dans la session et le restent jusqu'à ce que vous fermiez cette dernière.
Comme les modules statiques, les applets de commande et fonctions d'un module dynamique sont par défaut exportées, tandis 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.
Les modules dynamiques existent uniquement en mémoire, mais pas sur le disque. Comme tous les modules, les membres des modules dynamiques s'exécutent dans une portée de module privée qui est l'enfant de la portée globale. Get-Module ne peut pas obtenir de module dynamique, mais Get-Command peut obtenir les membres exportés.
Pour mettre un module dynamique à la disposition de Get-Module, dirigez une commande New-Module vers Import-Module ou dirigez l'objet de module renvoyé par New-Module vers Import-Module. Cette action ajoute le module dynamique à la liste Get-Module, mais il n'enregistre pas le module sur disque ni ne le rend permanent.
Paramètres
-ArgumentList <Object[]>
Spécifie les arguments (valeurs de paramètre) qui sont passés au bloc de script.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
aucun |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-AsCustomObject
Retourne un objet personnalisé avec des membres représentant les membres de module.
Lorsque vous utilisez le paramètre AsCustomObject, New-Module crée le module dynamique, importe les membres de module dans la session active, puis retourne un objet PSCustomObject au lieu d'un objet PSModuleInfo. Vous pouvez enregistrer l'objet personnalisé dans une variable et utiliser la notation par points pour appeler les membres.
Si le module comporte plusieurs membres de même nom, tels qu'une fonction et une variable nommées « A », un seul membre de chaque nom est accessible à partir de l'objet personnalisé.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
aucun |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-Cmdlet <string[]>
Exporte uniquement les applets de commande spécifiées du module dans la session active. Entrez une liste d'applets de commande 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 d'applets de commande dans un bloc de script, mais un module dynamique peut inclure des applets de commande s'il importe ces dernières à partir d'un module binaire.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
aucun |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
true |
-Function <string[]>
Exporte uniquement les fonctions spécifiées à partir du module dans la session active. Entrez une liste de 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.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
aucun |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
true |
-Name <string>
Spécifie le nom du 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 par « __DynamicModule_ » et est suivi d'un GUID spécifiant le chemin d'accès au module dynamique.
Obligatoire ? |
true |
Position ? |
1 |
Valeur par défaut |
"__DynamicModule_" + GUID |
Accepter l'entrée de pipeline ? |
true (ByValue) |
Accepter les caractères génériques ? |
false |
-ReturnResult
Exécute le bloc de script et retourne les résultats de ce dernier au lieu d'un objet de module.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
False |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-ScriptBlock <scriptblock>
Spécifie le contenu du module dynamique. Placez le contenu entre accolades ( { } ) pour créer un bloc de script. Ce paramètre est obligatoire.
Obligatoire ? |
true |
Position ? |
1 |
Valeur par défaut |
aucun |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
<CommonParameters>
Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer et -OutVariable. Pour plus d'informations, consultez about_Commonparameters.
Entrées et sorties
Le type d'entrée est le type des objets que vous pouvez diriger vers l'applet de commande. Le type de retour est le type des objets que l'applet de commande retourne.
Entrées |
System.String Vous pouvez diriger une chaîne de nom de module vers New-Module. |
Sorties |
System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject ou Aucun Par défaut, New-Module génère un objet PSModuleInfo. Si vous employez 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. |
Remarques
Vous pouvez également faire référence à New-Module par son alias, « nmo ». Pour plus d'informations, consultez about_Aliases.
Exemple 1
C:\PS>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 : {} Description ----------- Cette commande crée un nouveau module dynamique avec une fonction appelée « Hello ». Elle retourne un objet de module qui représente le nouveau module dynamique.
Exemple 2
C:\PS>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 : {} C:\PS> get-module C:\PS> C:\PS> get-command Hello CommandType Name Definition ----------- ---- ---------- Function Hello "Hello!" Description ----------- Cet exemple montre que les modules dynamiques ne sont pas retournés par l'applet de commande Get-Module, mais les membres qu'ils exportent sont retournés par l'applet de commande Get-Command.
Exemple 3
C:\PS>New-Module -scriptblock {$SayHelloHelp="Type 'SayHello', a space, and a name."; function SayHello ($name) { "Hello, $name" }; Export-ModuleMember -function SayHello -Variable SayHelloHelp} C:\PS> $SayHelloHelp Type 'SayHello', a space, and a name. C:\PS> SayHello Jeffrey Hello, Jeffrey Description ----------- Cette commande utilise l'applet de commande Export-ModuleMember pour exporter une variable dans la session active. Sans la commande Export-ModuleMember, seule la fonction est exportée. La sortie montre que la variable et la fonction ont été exportées dans la session.
Exemple 4
C:\PS>new-module -scriptblock {function Hello {"Hello!"}} -name GreetingModule | import-module C:\PS> 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 : {} C:\PS> get-command hello CommandType Name Definition ----------- ---- ---------- Function Hello "Hello!" Description ----------- Cette commande montre que vous pouvez mettre un module dynamique à la disposition de l'applet de commande Get-Module en dirigeant le module dynamique vers l'applet de commande Import-Module. La première commande utilise un opérateur de pipeline (|) pour envoyer l'objet de module que New-Module génère à l'applet de commande Import-Module. Elle utilise le paramètre Name de New-Module pour attribuer un nom convivial au module. Parce qu'Import-Module ne retourne aucun objet par défaut, cette commande ne produit aucune sortie. La deuxième commande utilise l'applet de commande Get-Module pour obtenir les modules dans la session. Le résultat montre que Get-Module peut obtenir le nouveau module dynamique. La troisième commande utilise l'applet de commande Get-Command pour obtenir la fonction Hello que le module dynamique exporte.
Exemple 5
C:\PS>$m = new-module -scriptblock {function Hello ($name) {"Hello, $name"}; function Goodbye ($name) {"Goodbye, $name"}} -AsCustomObject C:\PS> $m C:\PS> $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(); PS C:\ps-test> $m.goodbye("Jane") Goodbye, Jane PS C:\ps-test> $m.hello("Manoj") Hello, Manoj PS C:\ps-test> goodbye Jane Goodbye, Jane PS C:\ps-test> hello Manoj Hello, Manoj Description ----------- Cet exemple montre comment utiliser le paramètre AsCustomObject de New-Module pour générer un objet personnalisé avec des méthodes de script qui représentent les fonctions exportées. La première commande utilise l'applet de commande New-Module pour générer un module dynamique avec deux fonctions, Hello et Goodbye. Elle fait appel au paramètre AsCustomObject pour générer un objet personnalisé au lieu de l'objet PSModuleInfo que New-Module génère par défaut. La commande enregistre l'objet personnalisé dans la variable $m. La deuxième commande tente d'afficher la valeur de la variable $m. Aucun contenu n'apparaît. La troisième commande utilise un opérateur de pipeline (|) pour envoyer l'objet personnalisé à l'applet de commande Get-Member, qui affiche les propriétés et méthodes de l'objet personnalisé. La sortie montre que l'objet a des méthodes de script qui représentent les fonctions Hello et Goodbye. Les quatrième et cinquième commandes utilisent le format de méthode de script pour appeler les fonctions Hello et Goodbye. Les sixième et septième commandes appellent les fonctions en spécifiant le nom de fonction et la valeur de paramètre.
Exemple 6
C:\PS>new-module -scriptblock {function SayHello {"Hello, World!"}; SayHello} -returnResult Hello, World! Description ----------- Cette commande utilise le paramètre ReturnResult pour demander les résultats de l'exécution du bloc de script au lieu d'un objet de module. Le bloc de script du nouveau module définit la fonction SayHello, puis appelle la fonction.
Voir aussi