Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este documento inclui algumas diretrizes relacionadas à forma como um módulo é criado para melhor desempenho.
Criação do manifesto do módulo
Um manifesto de módulo que não usa as diretrizes a seguir pode ter um impacto perceptível no desempenho geral do PowerShell, mesmo que o módulo não seja usado em uma sessão.
A descoberta automática de comando analisa cada módulo para determinar quais comandos o módulo exporta e essa análise pode ser cara. Os resultados da análise de módulo são armazenados em cache por usuário, mas o cache não está disponível na primeira execução, que é um cenário típico com contêineres. Durante a análise do módulo, se os comandos exportados puderem ser totalmente determinados a partir do manifesto, uma análise mais cara do módulo poderá ser evitada.
Diretrizes
No manifesto do módulo, não use caracteres curinga nas entradas
AliasesToExport,CmdletsToExporteFunctionsToExport.Se o módulo não exportar comandos de um tipo específico, especifique-o explicitamente no manifesto especificando
@(). Uma entrada ausente ou$nullé equivalente à especificação do caractere curinga*.
O seguinte deve ser evitado sempre que possível:
@{
FunctionsToExport = '*'
# Also avoid omitting an entry, it's equivalent to using a wildcard
# CmdletsToExport = '*'
# AliasesToExport = '*'
}
Em vez disso, use:
@{
FunctionsToExport = 'Format-Hex', 'Format-Octal'
CmdletsToExport = @() # Specify an empty array, not $null
AliasesToExport = @() # Also ensure all three entries are present
}
Evitar CDXML
Ao decidir como implementar seu módulo, há três opções principais:
- Binário (geralmente C#)
- Script (PowerShell)
- CDXML (um arquivo XML que envolve CIM)
Se a velocidade de carregamento do módulo for importante, CDXML será aproximadamente uma ordem de magnitude mais lenta que um módulo binário.
Um módulo binário carrega o mais rápido porque é compilado com antecedência e pode usar o NGen para compilar JIT uma vez por computador.
Um módulo de script normalmente carrega um pouco mais lentamente do que um módulo binário porque o PowerShell deve analisar o script antes de compilá-lo e executá-lo.
Um módulo CDXML normalmente é muito mais lento do que um módulo de script porque ele deve primeiro analisar um arquivo XML que, em seguida, gera um pouco de script do PowerShell que é então analisado e compilado.