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 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 restent disponibles jusqu’à ce que vous fermez la session.
À 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 Get-Module, diriger une commande New-Module vers Import-Module ou diriger l’objet de module qui New-Module retourne à Import-Module. Cette action ajoute le module dynamique à la liste Get-Module, mais elle n’enregistre pas le module sur le disque ou le rend persistant.
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 de Get-Module et de Get-Command
Cet exemple montre que les modules dynamiques ne sont pas retournés par l’applet de commande Get-Module. Les membres qu’ils exportent sont retournés par l’applet de commande 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!"
Exemple 3 : Exporter une variable dans la session active
Cet exemple 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.
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 pipant le module dynamique sur Import-Module.
New-Module crée un objet de module dirigé vers l’applet de commande Import-Module. 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, il n’existe aucune sortie de cette commande.
Get-Module montre 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 de commande Get-Command affiche la fonction Hello 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é avec des méthodes de script qui représentent les fonctions exportées.
L’applet de commande New-Module 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 PSModuleInfoNew-Module généré par défaut. Cet objet personnalisé est enregistré dans la variable $m.
La variable $m 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 transmission de $m à l'applet de commande Get-Member 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 fonctions Hello 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 de module. Le bloc de script dans le nouveau module définit la fonction SayHello, 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, voir about_Splatting.
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 entre 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
PSModuleInfo
Cette applet de commande génère un objet PSModuleInfo par défaut.
PSCustomObject
Si vous utilisez le paramètre AsCustomObject, il génère un objet PSCustomObject.
Object
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