New-Module
Crée un module dynamique qui existe uniquement en mémoire.
Syntaxe
ScriptBlock (Par défaut)
New-Module
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Name
New-Module
[-Name] <String>
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Description
L’applet de commande New-Module
À l'instar des modules statiques, par défaut, les cmdlets et les fonctions d’un module dynamique sont 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.
Vous pouvez également utiliser le paramètre AsCustomObject de New-Module pour 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, et non 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 pouvez obtenir les membres exportés.
Pour rendre un module dynamique disponible pour
Exemples
Exemple 1 : Créer un 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 : {}
Cette commande 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.
Exemple 2 : Utilisation de modules dynamiques et de Get-Module et de Get-Command
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!"
Cet exemple montre que les modules dynamiques ne sont pas retournés par l’applet de commande Get-Module
Exemple 3 : Exporter une variable dans la session active
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
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 indique que la variable et la fonction ont été exportées dans la session.
Exemple 4 : Rendre un module dynamique disponible pour Get-Module
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!"
Cette commande montre que vous pouvez rendre un module dynamique disponible pour Get-Module en pipissant le module dynamique vers Import-Module .
La première commande utilise un opérateur de pipeline (|) pour envoyer l’objet de module qui New-Module génère à l’applet de commande Import-Module. La commande utilise le paramètre Name de new-module pour attribuer 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.
La deuxième commande utilise 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 : Générer un objet personnalisé qui a des fonctions exportées
$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
Cet exemple montre comment utiliser le paramètre AsCustomObject de new-module pour générer un objet personnalisé qui contient 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. La commande utilise le paramètre AsCustomObject pour générer un objet personnalisé au lieu de l’objet PSModuleInfo généré par défaut New-Module. 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 indique 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.
Exemple 6 : Obtenir les résultats du bloc de script
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Cette commande 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 fonction SayHello, puis appelle la fonction.
Paramètres
-ArgumentList
Spécifie un tableau d’arguments qui sont des valeurs de paramètre passées au bloc de script.
Propriétés du paramètre
| Type: | Object[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | Args |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-AsCustomObject
Indique que cette applet de commande retourne un objet personnalisé qui représente le module dynamique. Les membres du 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é.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Cmdlet
Spécifie un tableau d’applets de commande que cette applet de commande exporte depuis le module vers la session en cours. 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 d’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.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Function
Spécifie un tableau de fonctions que cette applet de commande exporte 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.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | True |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-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 par __DynamicModule_ et est suivi d’un GUID qui spécifie le chemin d’accès du module dynamique.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
Name
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | 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.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | 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.
Propriétés du paramètre
| Type: | ScriptBlock |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 1 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
Entrées
String
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 par défaut un objet PSModuleInfo. 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 à
New-Modulepar son alias,nmo. Pour plus d’informations, consultez about_Aliases.