New-Module
Cria um novo módulo dinâmico que existe apenas na memória.
Sintaxe
New-Module
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
New-Module
[-Name] <String>
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Description
O cmdlet New-Module cria um módulo dinâmico a partir de um bloco de script. Os membros do módulo dinâmico, como funções e variáveis, estão imediatamente disponíveis na sessão e permanecem disponíveis até que você feche a sessão.
Assim como os módulos estáticos, por padrão, os cmdlets e as funções em um módulo dinâmico são exportados e as variáveis e os aliases não são. No entanto, você pode usar o cmdlet Export-ModuleMember e os parâmetros de new-module para substituir os padrões.
Você também pode usar o parâmetro
Os módulos dinâmicos existem apenas na memória, não no disco. Como todos os módulos, os membros de módulos dinâmicos são executados em um escopo de módulo privado que é filho do escopo global. Get-Module não pode obter um módulo dinâmico, mas Get-Command pode obter os membros exportados.
Para disponibilizar um módulo dinâmico para get-module, redirecione um comando New-Module para Import-Module ou redirecione o objeto do módulo que New-Module retorna para Import-Module.
Essa ação adiciona o módulo dinâmico à lista de do
Exemplos
Exemplo 1: criar um 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 : {}
Esse comando cria um novo módulo dinâmico com uma função chamada Hello. O comando retorna um objeto de módulo que representa o novo módulo dinâmico.
Exemplo 2: Trabalhando com módulos dinâmicos e Get-Module e 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!"
Este exemplo demonstra que os módulos dinâmicos não são retornados pelo cmdlet Get-Module.
Os membros exportados são retornados pelo cmdlet get-command
Exemplo 3: Exportar uma variável para a sessão atual
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
Esse comando usa o cmdlet Export-ModuleMember para exportar uma variável para a sessão atual.
Sem o comando Export-ModuleMember
A saída mostra que a variável e a função foram exportadas para a sessão.
Exemplo 4: disponibilizar um módulo dinâmico 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 demonstra que você pode disponibilizar um módulo dinâmico para Get-Module canalizando o módulo dinâmico para import-module.
O primeiro comando usa um operador de pipeline (|) para enviar o objeto de módulo que
O segundo comando usa Get-Module para obter os módulos na sessão. O resultado mostra que get-module pode obter o novo módulo dinâmico.
O terceiro comando usa o cmdlet
Exemplo 5: gerar um objeto personalizado que tenha funções 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
Este exemplo mostra como usar o parâmetro AsCustomObject de New-Module para gerar um objeto personalizado que tem métodos de script que representam as funções exportadas.
O primeiro comando usa o cmdlet New-Module para gerar um módulo dinâmico com duas funções, Hello e Goodbye. O comando usa o parâmetro AsCustomObject para gerar um objeto personalizado em vez do objeto PSModuleInfo que New-Module gera por padrão. O comando salva o objeto personalizado na variável $m.
O segundo comando tenta exibir o valor da variável $m. Nenhum conteúdo é exibido.
O terceiro comando usa um operador de pipeline para enviar o objeto personalizado para o cmdlet de membro de
O quarto e o quinto comandos usam o formato do método script para chamar as funções Hello e Goodbye.
Exemplo 6: Obter os resultados do bloco de script
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Esse comando usa o parâmetro ReturnResult para solicitar os resultados da execução do bloco de script em vez de solicitar um objeto de módulo.
O bloco de script no novo módulo define a função SayHello e, em seguida, chama a função.
Parâmetros
-ArgumentList
Especifica uma matriz de argumentos que são valores de parâmetro que são passados para o bloco de script.
Tipo: | Object[] |
Aliases: | Args |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-AsCustomObject
Indica que esse cmdlet retorna um objeto personalizado que representa o módulo dinâmico. Os membros do módulo são implementados como métodos de script do objeto personalizado, mas não são importados para a sessão. Você pode salvar o objeto personalizado em uma variável e usar a notação de ponto para invocar os membros.
Se o módulo tiver vários membros com o mesmo nome, como uma função e uma variável chamada A, somente um membro com cada nome poderá ser acessado do objeto personalizado.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Cmdlet
Especifica uma matriz de cmdlets que esse cmdlet exporta do módulo para a sessão atual. Insira uma lista separada por vírgulas de cmdlets. Caracteres curinga são permitidos. Por padrão, todos os cmdlets no módulo são exportados.
Você não pode definir cmdlets em um bloco de script, mas um módulo dinâmico poderá incluir cmdlets se importar os cmdlets de um módulo binário.
Tipo: | String[] |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Function
Especifica uma matriz de funções que esse cmdlet exporta do módulo para a sessão atual. Insira uma lista separada por vírgulas de funções. Caracteres curinga são permitidos. Por padrão, todas as funções definidas em um módulo são exportadas.
Tipo: | String[] |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | True |
-Name
Especifica um nome para o novo módulo. Você também pode canalizar um nome de módulo para New-Module.
O valor padrão é um nome gerado automaticamente que começa com __DynamicModule_
e é seguido por um GUID que especifica o caminho do módulo dinâmico.
Tipo: | String |
Cargo: | 0 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-ReturnResult
Indica que esse cmdlet executa o bloco de script e retorna os resultados do bloco de script em vez de retornar um objeto de módulo.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-ScriptBlock
Especifica o conteúdo do módulo dinâmico. Coloque o conteúdo em chaves ( { } ) para criar um bloco de script. Esse parâmetro é necessário.
Tipo: | ScriptBlock |
Cargo: | 1 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
Entradas
Você pode canalizar um nome de módulo para este cmdlet.
Saídas
System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None
Esse cmdlet gera um objeto PSModuleInfo, por padrão.
Se você usar o parâmetro
Observações
- Você também pode consultar
New-Module
por seu alias,nmo
. Para obter mais informações, consulte about_Aliases.