Crea un nuevo módulo dinámico que sólo existe en memoria.

Sintaxis

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>]

Descripción

El cmdlet New-Module crea un módulo dinámico a partir de un bloque de script. Los miembros del módulo dinámico, tales como funciones y variables, están disponibles inmediatamente en la sesión y permanecen disponibles hasta cerrar la misma.

De forma predeterminada, y al igual que sucede en los módulos estáticos, los cmdlet y las funciones de un módulo dinámico se exportan, mientras que las variables y alias, no. No obstante, es posible utilizar el cmdlet Export-ModuleMember y los parámetros del cmdlet New-Module para invalidar los valores predeterminados.

Los módulos dinámicos solo existen en memoria, no en disco. Al igual que sucede con todos los módulos, los miembros de módulos dinámicos se ejecutan en un ámbito de módulo privado que es un elemento secundario del ámbito global. Get-Module no puede obtener un módulo dinámico, pero Get-Command puede obtener los miembros exportados.

Para hacer que un módulo dinámico esté disponible para Get-Module, se debe canalizar un comando New-Module a Import-Module, o bien canalizar el objeto de módulo que New-Module devuelve a Import-Module. Esta acción agrega el módulo dinámico a la lista de Get-Module, pero no guarda el módulo en disco ni lo hace persistente.

Parámetros

-ArgumentList <Object[]>

Especifica argumentos (valores de parámetro) que se pasan al bloque de script.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-AsCustomObject

Devuelve un objeto personalizado con miembros que representan los miembros de módulo.

Cuando se utiliza el parámetro AsCustomObject, New-Module crea el módulo dinámico, importa los miembros de módulo en la sesión actual y, a continuación, devuelve un objeto PSCustomObject en lugar de un objeto PSModuleInfo. Se puede guardar el objeto personalizado en una variable y usar la notación de puntos para invocar los miembros.

Si el módulo tiene varios miembros con el mismo nombre, como una función y una variable cuyo nombre sea "A", el objeto personalizado solo tiene acceso a un miembro con cada nombre.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Cmdlet <string[]>

Exporta solamente los cmdlets especificados del módulo en la sesión actual. Se debe escribir una lista de cmdlets separados por comas. Se permite el uso de caracteres comodín. De forma predeterminada, se exportan todos los cmdlets del módulo.

No se pueden definir los cmdlets en un bloque de script, pero un módulo dinámico puede incluir los cmdlets si los importa de un módulo binario.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

true

-Function <string[]>

Exporta solamente las funciones especificadas del módulo en la sesión actual. Escriba una lista de funciones separadas por comas. Se permite el uso de caracteres comodín. De forma predeterminada, se exportan todas las funciones definidas en un módulo.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

true

-Name <string>

Especifica un nombre para el nuevo módulo. También se puede canalizar un nombre de módulo a New-Module.

El valor predeterminado es un nombre autogenerado que empieza por "__DynamicModule_" y va seguido de un GUID que especifica la ruta de acceso al módulo dinámico.

¿Requerido?

true

¿Posición?

1

Valor predeterminado

"__DynamicModule_" + GUID

¿Aceptar canalización?

true (ByValue)

¿Aceptar caracteres comodín?

false

-ReturnResult

Ejecuta el bloque de script y devuelve los resultados de bloque de script en lugar de devolver un objeto de módulo.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

False

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-ScriptBlock <scriptblock>

Especifica el contenido del módulo dinámico. Incluya el contenido entre llaves ({}) para crear un bloque de script. Este parámetro es obligatorio.

¿Requerido?

true

¿Posición?

1

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

<CommonParameters>

Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.

Entradas y salidas

El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.

Entradas

System.String

Se puede canalizar una cadena de nombre de módulo a New-Module.

Salidas

System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject o ninguno

De forma predeterminada, New-Module genera un objeto PSModuleInfo. Si se utiliza el parámetro AsCustomObject, genera un objeto PSCustomObject. Si se utiliza el parámetro ReturnResult, devuelve el resultado de evaluar el bloque de script en el módulo dinámico.

Notas

También se puede hacer referencia a New-Module por su alias, "nmo". Para obtener más información, vea about_Aliases.

Ejemplo 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     : {}

Descripción
-----------
Este comando crea un nuevo módulo dinámico con una función denominada "Hello". El comando devuelve un objeto de módulo que representa el nuevo módulo dinámico.






Ejemplo 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!"

Descripción
-----------
En este ejemplo se muestra que los módulos dinámicos no son devueltos por el cmdlet Get-Module, pero que el cmdlet Get-Command devuelve los miembros que estos módulos exportan.






Ejemplo 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

Descripción
-----------
Este comando utiliza el cmdlet Export-ModuleMember para exportar una variable en la sesión actual. Sin el comando Export-ModuleMember, sólo se exporta la función.

Los resultados muestran que tanto la variable como la función se exportaron en la sesión.






Ejemplo 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!"

Descripción
-----------
Este comando muestra que se puede hacer que un módulo dinámico esté disponible para el cmdlet Get-Module canalizando el módulo dinámico al cmdlet Import-Module.

El primer comando utiliza un operador de canalización (|) para enviar el objeto de módulo que New-Module genera al cmdlet Import-Module. El comando utiliza el parámetro Name de New-Module para asignar un nombre simple al módulo. Dado que Import-Module no devuelve objetos de forma predeterminada, este comando no genera resultados.

El segundo comando utiliza el cmdlet Get-Module para obtener los módulos de la sesión. El resultado muestra que Get-Module puede obtener el nuevo módulo dinámico.

El tercer comando usa el cmdlet Get-Command para obtener la función Hello que el módulo dinámico exporta.






Ejemplo 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

Descripción
-----------
En este ejemplo se muestra la forma de utilizar el parámetro AsCustomObject de New-Module para generar un objeto personalizado con métodos de script que representan las funciones exportadas.

El primer comando utiliza el cmdlet New-Module para generar un módulo dinámico con dos funciones, Hello y Goodbye. El comando utiliza el parámetro AsCustomObject para generar un objeto personalizado, en lugar del objeto PSModuleInfo que New-Module genera de forma predeterminada. El comando guarda el objeto personalizado en la variable $m.

El segundo comando intenta mostrar el valor de la variable $m. No aparece contenido.

El tercer comando usa un operador de canalización (|) para enviar el objeto personalizado al cmdlet Get-Member, que muestra las propiedades y métodos del objeto personalizado. Los resultados muestran que el objeto tiene métodos de script que representan las funciones Hello y Goodbye.

Los comandos cuarto y quinto utilizan el formato de método de script para llamar a las funciones Hello y Goodbye. 
 
Los comandos sexto y séptimo llaman a las funciones especificando el nombre de función y valor de parámetro.






Ejemplo 6

C:\PS>new-module -scriptblock {function SayHello {"Hello, World!"}; SayHello} -returnResult

Hello, World!

Descripción
-----------
Este comando utiliza el parámetro ReturnResult para solicitar los resultados de ejecutar el bloque de script en lugar de solicitar un objeto de módulo. 

El bloque de script del nuevo módulo define la función SayHello y, a continuación, llama a la función.






Vea también




Tabla de contenido