New-Module
Cria um novo módulo dinâmico que existe apenas na memória.
Sintaxe
ScriptBlock (Padrão)
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>]
Descrição
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.
Como os módulos estáticos, por padrão, os cmdlets e funções em um módulo dinâmico são exportados e as variáveis e aliases não. No entanto, pode usar o cmdlet Export-ModuleMember e os parâmetros de New-Module para alterar as predefiniçõ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 importados para a sessão.
Os módulos dinâmicos existem apenas na memória, não no disco. Como todos os módulos, os membros dos módulos dinâmicos operam 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, canalize um comando New-Module para Import-Module ou canalize o objeto de módulo que New-Module retorna para Import-Module. Esta ação adiciona o módulo dinâmico à lista de Get-Module, mas não salva o módulo no disco nem o torna 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: Trabalhar com módulos dinâmicos e Get-Module e Get-Command
Este exemplo demonstra que os módulos dinâmicos não são retornados pelo cmdlet Get-Module. Os membros que eles exportam são retornados pelo cmdlet 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!"
Exemplo 3: Exportar uma variável para a sessão atual
Este exemplo usa o cmdlet Export-ModuleMember para exportar uma variável para a sessão atual.
Sem o comando Export-ModuleMember, apenas 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 tanto a variável quanto 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 cmdlet Import-Module. O Name parâmetro 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 cmdlet Get-Command mostra a função Hello 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 New-Module para gerar um objeto personalizado que tenha métodos de script que representam as funções exportadas.
O cmdlet New-Module 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 gera por padrão. Esse objeto personalizado é salvo na variável $m.
A variável $m parece não ter 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
Canalizar o $m para o cmdlet Get-Member 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.
Finalmente, chamamos esses métodos de script e exibimos os resultados.
Exemplo 6: Obtenha os resultados do bloco de scripts
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 scripts no novo módulo define a SayHello função e depois chama-a.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Parâmetros
-ArgumentList
Especifica um array de argumentos que são valores de parâmetros que são passados ao bloco de script. Para mais informações sobre o comportamento de ArgumentList, consulte about_Splatting.
Propriedades dos parâmetros
| Tipo: | Object[] |
| Valor padrão: | None |
| Suporta curingas: | False |
| DontShow: | False |
| Pseudónimos: | Argumentos |
Conjuntos de parâmetros
(All)
| Posição: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome da propriedade: | False |
| Valor dos argumentos restantes: | 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 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 ambas denominadas A, apenas um membro com cada nome poderá ser acessado a partir do objeto personalizado.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Suporta curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Posição: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Cmdlet
Especifica uma matriz de cmdlets que esse cmdlet exporta do módulo para a sessão atual. Insira uma lista de cmdlets separados por vírgula. Caracteres coringa são permitidos. Por padrão, todos os cmdlets no módulo são exportados.
Não podes definir cmdlets num bloco de script, mas um módulo dinâmico pode incluir cmdlets se importar os cmdlets de um módulo binário.
Propriedades dos parâmetros
| Tipo: | String[] |
| Valor padrão: | None |
| Suporta curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Posição: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Function
Especifica uma matriz de funções que esse cmdlet exporta do módulo para a sessão atual. Insira uma lista de funções separadas por vírgula. Caracteres coringa são permitidos. Por padrão, todas as funções definidas em um módulo são exportadas.
Propriedades dos parâmetros
| Tipo: | String[] |
| Valor padrão: | None |
| Suporta curingas: | True |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Posição: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Name
Especifica um nome para o novo módulo. Você também pode encaminhar um nome de módulo para o 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.
Propriedades dos parâmetros
| Tipo: | String |
| Valor padrão: | None |
| Suporta curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
Name
| Posição: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline por nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-ReturnResult
Indica que este cmdlet executa o bloco de script e devolve os resultados do bloco de script em vez de devolver um objeto do módulo.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Suporta curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Posição: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-ScriptBlock
Especifica o conteúdo do módulo dinâmico. Inclua o conteúdo em colchetes ({}) para criar um bloco de script. Este parâmetro é obrigatório.
Propriedades dos parâmetros
| Tipo: | ScriptBlock |
| Valor padrão: | None |
| Suporta curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Posição: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
String
Você pode canalizar um nome de módulo para esse cmdlet.
Saídas
PSModuleInfo
Este cmdlet gera por padrão um objeto PSModuleInfo.
PSCustomObject
Se você usar o parâmetro AsCustomObject, ele gerará um objeto PSCustomObject.
Object
Se usar o parâmetro ReturnResult , este cmdlet devolve o resultado da avaliação do bloco de script no módulo dinâmico.
Notas
O PowerShell inclui os seguintes aliases para New-Module:
- Todas as plataformas:
nmo