Partager via


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