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 New-Module
cmdlet 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é que você feche a sessão.
Semelhante aos módulos estáticos, por padrão, os cmdlets e funções em um módulo dinâmico são exportadas 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 AsCustomObject de New-Module
para retornar o módulo dinâmico como um objeto personalizado. Os membros dos módulos, como funções, são implementados como métodos de script do objeto personalizado em vez de serem importadas para a sessão.
Módulos dinâmicos existem apenas na memória, não no disco. Assim como todos os módulos, os membros de módulos dinâmicos são executados em um escopo de módulo privado que é um filho do escopo global. Get-Module não obtém um módulo dinâmico, mas Get-Command pode obter os membros exportados.
Para disponibilizar um módulo dinâmico para Get-Module
, canalize um New-Module
comando para Import-Module ou canalize o objeto de módulo que New-Module
retorna para Import-Module
. Essa ação adiciona o módulo dinâmico na lista de Get-Module
, mas não salva o módulo de disco nem torna-o persistente.
Exemplos
Exemplo 1: Criar um módulo dinâmico
Este exemplo 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.
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 : {}
Exemplo 2: Trabalhando com módulos dinâmicos e Get-Module e Get-Command
Este exemplo demonstra que os Get-Module
módulos dinâmicos não são retornados pelo cmdlet. Os membros que eles exportam são retornados pelo Get-Command
cmdlet.
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!"
Exemplo 3: Exportar uma variável para a sessão atual
Este exemplo usa o Export-ModuleMember
cmdlet para exportar uma variável para a sessão atual.
Sem o Export-ModuleMember
comando, somente a função é exportada.
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
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
Este exemplo demonstra que você pode disponibilizar um módulo dinâmico para Get-Module
canalizando o módulo dinâmico para Import-Module
.
New-Module
Cria um objeto de módulo que é canalizado para o Import-Module
cmdlet. O parâmetro Name de New-Module
atribui um nome amigável ao módulo. Como Import-Module
não retorna nenhum objeto por padrão, não há saída desse comando. Get-Module
que o GreetingModule foi importado para a sessão atual.
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!"
O Get-Command
cmdlet mostra a Hello
função que o módulo dinâmico exporta.
Exemplo 5: Gerar um objeto personalizado que exportou funções
Este exemplo mostra como usar o parâmetro AsCustomObject de para gerar um objeto personalizado que tenha métodos de New-Module
script que representam as funções exportadas.
O New-Module
cmdlet cria um módulo dinâmico com duas funções Hello
e Goodbye
. O parâmetro AsCustomObject cria um objeto personalizado em vez do objeto PSModuleInfo que New-Module
é gerado por padrão. Esse objeto personalizado é salvo na $m
variável.
A $m
variável parece não ter nenhum valor atribuído.
$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
O $m
encaminhamento para o Get-Member
cmdlet 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 Hello
funções and Goodbye
.
Por fim, chamamos esses métodos de script e exibimos os resultados.
Exemplo 6: Obter os resultados do bloco de script
Este exemplo 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 SayHello
função e, em seguida, chama a função.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Parâmetros
-ArgumentList
Especifica uma matriz de argumentos que são valores de parâmetro que são passados para o bloco de script. Para obter mais informações sobre o comportamento de ArgumentList, consulte about_Splatting.
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 eles 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 que são nomeadas A, somente um membro com cada nome poderá ser acessado a partir 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. Digite uma lista separada por vírgulas dos cmdlets. Caracteres curinga são permitidos. Por padrão, todos os cmdlets no módulo são exportados.
Você não pode definir os cmdlets em um bloco de script, mas um módulo dinâmico pode 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. Digite 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. Também é possível direcionar um nome de computador 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 entre chaves ({}
) para criar um bloco de script. Este parâmetro é obrigató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 esse cmdlet.
Saídas
Esse cmdlet gera um objeto PSModuleInfo por padrão.
Se você usar o parâmetro AsCustomObject , ele gerará um objeto PSCustomObject .
Se você usar o parâmetro ReturnResult , esse cmdlet retornará o resultado da avaliação do bloco de script no módulo dinâmico.
Observações
O Windows PowerShell inclui os seguintes aliases para New-Module
:
nmo
Você também pode se referir por New-Module
seu apelido, nmo
. Para obter mais informações, consulte about_Aliases.