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




Table des matières