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