New-Module
Crea un nuevo módulo dinámico que solo existe en la memoria.
Sintaxis
ScriptBlock (valor predeterminado)
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
El cmdlet New-Module crea un módulo dinámico a partir de un bloque de script. Los miembros del módulo dinámico, como funciones y variables, están disponibles inmediatamente en la sesión y permanecen disponibles hasta que cierre la sesión.
Al igual que los módulos estáticos, de forma predeterminada, los cmdlets y las funciones de un módulo dinámico se exportan y no se exportan las variables y alias. Sin embargo, puede usar el cmdlet Export-ModuleMember y los parámetros de New-Module para invalidar los valores predeterminados.
También puede usar el parámetro AsCustomObject de New-Module para devolver el módulo dinámico como un objeto personalizado. Los miembros de los módulos, como las funciones, se implementan como métodos de script del objeto personalizado en lugar de importarse en la sesión.
Los módulos dinámicos solo existen en memoria, no en el disco. Al igual que todos los módulos, los miembros de los 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 que un módulo dinámico esté disponible para Get-Module, canalice un comando New-Module a Import-Module o canalice el objeto de módulo que New-Module vuelve 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 el disco ni lo hace persistente.
Ejemplos
Ejemplo 1: Creación de un módulo dinámico
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 : {}
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: Trabajar con módulos dinámicos y Get-Module y 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!"
En este ejemplo se muestra que los módulos dinámicos no los devuelve el cmdlet Get-Module.
El cmdlet
Ejemplo 3: Exportación de una variable a la sesión actual
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
Este comando usa el cmdlet Export-ModuleMember para exportar una variable a la sesión actual. Sin el comando Export-ModuleMember, solo se exporta la función.
La salida muestra que tanto la variable como la función se exportaron a la sesión.
Ejemplo 4: Hacer que un módulo dinámico esté disponible para 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!"
Este comando muestra que puede hacer que un módulo dinámico esté disponible para Get-Module canalizando el módulo dinámico a Import-Module.
El primer comando usa un operador de canalización (|) para enviar el objeto de módulo que New-Module genera al cmdlet Import-Module. El comando usa el parámetro Name de New-Module para asignar un nombre descriptivo al módulo. Dado que import-Module no devuelve ningún objeto de forma predeterminada, no hay ninguna salida de este comando.
El segundo comando usa 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 exporta el módulo dinámico.
Ejemplo 5: Generación de un objeto personalizado que tiene funciones exportadas
$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
En este ejemplo se muestra cómo usar el parámetro AsCustomObject de New-Module para generar un objeto personalizado que tenga métodos de script que representen las funciones exportadas.
El primer comando usa el cmdlet New-Module para generar un módulo dinámico con dos funciones, Hello y Goodbye. El comando usa 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 los métodos del objeto personalizado. La salida muestra que el objeto tiene métodos de script que representan las funciones Hello y Goodbye.
Los comandos cuarto y quinto usan el formato del método de script para llamar a las funciones Hello y Goodbye.
Ejemplo 6: Obtención de los resultados del bloque de script
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Este comando usa 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 .
Parámetros
-ArgumentList
Especifica una matriz de argumentos que son valores de parámetro que se pasan al bloque de script.
Propiedades de parámetro
| Tipo: | Object[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | Argumentos |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-AsCustomObject
Indica que este cmdlet devuelve un objeto personalizado que representa el módulo dinámico. Los miembros del módulo se implementan como métodos de script del objeto personalizado, pero no se importan en la sesión. Puede guardar el objeto personalizado en una variable y usar la notación de puntos para invocar a los miembros.
Si el módulo tiene varios miembros con el mismo nombre, como una función y una variable denominada A, solo se puede tener acceso a un miembro con cada nombre desde el objeto personalizado.
Propiedades de parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Cmdlet
Especifica una matriz de cmdlets que este cmdlet exporta desde el módulo a la sesión actual. Escriba una lista separada por comas de cmdlets. Se permite el uso de caracteres comodín. De forma predeterminada, se exportan todos los cmdlets del módulo.
No se pueden definir cmdlets en un bloque de script, pero un módulo dinámico puede incluir cmdlets si importa los cmdlets de un módulo binario.
Propiedades de parámetro
| Tipo: | String[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Function
Especifica una matriz de funciones que este cmdlet exporta desde el módulo a la sesión actual. Escriba una lista separada por comas de funciones. Se permite el uso de caracteres comodín. De forma predeterminada, se exportan todas las funciones definidas en un módulo.
Propiedades de parámetro
| Tipo: | String[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | True |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Name
Especifica un nombre para el nuevo módulo. También puede canalizar un nombre de módulo a New-Module.
El valor predeterminado es un nombre generado automáticamente que comienza por __DynamicModule_ y va seguido de un GUID que especifica la ruta de acceso del módulo dinámico.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
Name
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-ReturnResult
Indica que este cmdlet ejecuta el bloque de script y devuelve los resultados del bloque de script en lugar de devolver un objeto de módulo.
Propiedades de parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-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.
Propiedades de parámetro
| Tipo: | ScriptBlock |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | 1 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
String
Puede canalizar un nombre de módulo a este cmdlet.
Salidas
System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None
Este cmdlet genera un objeto PSModuleInfo de forma predeterminada. Si usa el parámetro AsCustomObject, genera un objeto PSCustomObject. Si usa el parámetro ReturnResult, devuelve el resultado de evaluar el bloque de script en el módulo dinámico.
Notas
- También puede hacer referencia a
New-Modulepor su alias,nmo. Para más información, vea about_Aliases.