Cria um novo módulo dinâmico que só existe na memória.

Sintaxe

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

Descrição

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, ficam imediatamente disponíveis na sessão e permanecem disponíveis até você fechá-la.

Como módulos estáticos, por padrão, os cmdlets e as funções em um módulo dinâmico são exportados, o que não ocorre com as variáveis e os aliases. Entretanto, você poderá usar o cmdlet Export-ModuleMember e os parâmetros de New-Module para substituir os padrões.

Os módulos dinâmicos só existem na memória; não em disco. Como todos os módulos, os membros de módulos dinâmicos são executados em um escopo de módulo particular que é um filho do escopo global. Get-Module não pode obter um módulo dinâmico, mas Get-Command pode obter os membros exportados.

Para tornar um módulo dinâmico disponível para Get-Module, canalize um comando New-Module para Import-Module, ou canalize o objeto do módulo que New-Module retorna a Import-Module. Essa ação adiciona o módulo dinâmico à lista de Get-Module, mas não salva o módulo em disco ou o torna persistente.

Parâmetros

-ArgumentList <Object[]>

Especifica argumentos (valores de parâmetros) que são transmitidos para o bloco de script.

Necessário?

false

Posição?

named

Valor padrão

nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-AsCustomObject

Retorna um objeto personalizado com membros que representam os membros do módulo.

Quando você usa o parâmetro AsCustomObject, New-Module cria o módulo dinâmico, importa os membros do módulo para a sessão atual e retorna um objeto PSCustomObject, em vez de um objeto PSModuleInfo. 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 que sejam ambos denominados "A", somente um membro com cada nome estará acessível no objeto personalizado.

Necessário?

false

Posição?

named

Valor padrão

nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Cmdlet <string[]>

Exporta somente os cmdlets especificados do módulo para a sessão atual. Digite uma lista de cmdlets separados por vírgula. São permitidos caracteres curinga. Por padrão, todos os cmdlets do 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 os importar de um módulo binário.

Necessário?

false

Posição?

named

Valor padrão

nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

true

-Function <string[]>

Exporta somente as funções especificadas do módulo para a sessão atual. Digite uma lista de funções separadas por vírgula. São permitidos caracteres curinga. Por padrão, todas as funções definidas em um módulo são exportadas.

Necessário?

false

Posição?

named

Valor padrão

nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

true

-Name <string>

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 de um GUID que especifica o caminho para o módulo dinâmico.

Necessário?

true

Posição?

1

Valor padrão

"__DynamicModule_" + GUID

Aceitar entrada do pipeline?

true (ByValue)

Aceitar caracteres curinga?

false

-ReturnResult

Executa o bloco de script e retorna os resultados do bloco de script, em vez de retornar um objeto de módulo.

Necessário?

false

Posição?

named

Valor padrão

False

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-ScriptBlock <scriptblock>

Especifica o conteúdo do módulo dinâmico. Coloque o conteúdo entre chaves ( { } ) para criar um bloco de scripts. Esse parâmetro é obrigatório.

Necessário?

true

Posição?

1

Valor padrão

nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

<CommonParameters>

Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.

Entradas e saídas

O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.

Entradas

System.String

Você pode canalizar uma cadeia de caracteres de nome de módulo para New-Module.

Saídas

System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject ou None

Por padrão, New-Module gera um objeto PSModuleInfo. Se você usar o parâmetro AsCustomObject, ele gerará um objeto PSCustomObject. Se você usar o parâmetro ReturnResult, ele retornará o resultado da avaliação do bloco de script no módulo dinâmico.

Observações

Também é possível referenciar New-Module usando seu alias, "nmo". Para obter mais informações, consulte about_Aliases.

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

Descrição
-----------
Esse comando cria um novo módulo dinâmico com uma função chamada "Hello" O comando retorna um objeto do módulo que representa o novo módulo dinâmico.






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

Descrição
-----------
Este exemplo demonstra que os módulos dinâmicos não são retornados pelo cmdlet Get-Module, mas os membros que eles exportam são retornados pelo cmdlet Get-Command.






Exemplo 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

Descrição
-----------
Esse comando usa o cmdlet Export-ModuleMember para exportar uma variável na sessão atual. Sem o comando Export-ModuleMember, apenas a função é exportada.

A saída mostra que a variável e a função foram exportadas para a sessão.






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

Descrição
-----------
Esse comando demonstra que você pode tornar um módulo dinâmico disponível para o cmdlet Get-Module canalizando o módulo dinâmico para o cmdlet Import-Module.

O primeiro comando usa um operador de pipeline (|) para enviar o objeto do módulo que New-Module gera para o cmdlet Import-Module. O comando usa o parâmetro Name de New-Module para atribuir um nome amigável ao módulo. Como o Import-Module não retorna objetos por padrão, não há saída desse comando.

O segundo comando usa o cmdlet 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 Get-Command para obter a função Hello que o módulo dinâmico exporta.






Exemplo 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

Descrição
-----------
Esse exemplo mostra como usar o parâmetro AsCustomObject de New-Module para gerar um objeto personalizado com 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 Get-Member, que exibe as propriedades e os métodos do objeto personalizado. A saída mostra que o objeto tem métodos de script que representam as funções Hello e Goodbye.

O quarto e o quinto comandos usam o formato de método de script para chamar as funções Hello e Goodbye. 
 
O sexto e o sétimo comandos chamam as funções especificando o nome da função e o valor do parâmetro.






Exemplo 6

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

Hello, World!

Descrição
-----------
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.






See Also




Sumário