Você já executou um comando PowerShell e recebeu a temida mensagem de erro “O termo não é reconhecido como o nome de um cmdlet”? Aqui está a questão: o problema pode ser tão simples quanto um módulo ausente ou não importado. Mesmo nas versões modernas do PowerShell, entender como os módulos funcionam é fundamental para diagnosticar e corrigir esses problemas.
A boa notícia? Este guia cobre tudo, desde verificar quais módulos o PowerShell atualmente importou até dominar como importá-los, removê-los e reimportá-los. Ao final, você estará apto a gerenciar módulos do PowerShell de forma tranquila, seja solucionando erros inesperados ou trabalhando em módulos personalizados.
Entre e deixe os módulos do PowerShell ajudá-lo a otimizar seu fluxo de trabalho com confiança!
Verificando Módulos Importados
Os comandos do PowerShell podem falhar com mensagens de erro enigmáticas quando os módulos não são carregados corretamente. Por exemplo, tentar executar Get-ADUser sem primeiro importar o módulo ActiveDirectory resultará em um erro de “comando não encontrado”. Da mesma forma, tentar usar comandos do Azure requer que o módulo Az esteja presente em sua sessão.
O PowerShell deve importar o módulo relevante para garantir que os comandos funcionem como esperado e tornar seus comandos disponíveis.
Para visualizar os módulos atualmente importados, use:
Get-Module
Quando você executa Get-Module, verá uma saída semelhante a esta:
ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Get-PSReadLineOption...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare, Remove-SmbShare...}
Isso exibe uma lista de todos os módulos atualmente carregados em sua sessão do PowerShell, mostrando seu tipo (Manifesto, Script ou Binário), número da versão, nome do módulo e um resumo dos comandos que eles fornecem. A coluna ExportedCommands mostra quais cmdlets estão disponíveis a partir de cada módulo.
Em seguida, examine os comandos de um módulo que você pode importar:
Get-Module -Name SmbShare -ListAvailable | Select exportedcommands
Quando você executar este comando, verá a saída que lista todos os comandos disponíveis no módulo SmbShare. Por exemplo:
ExportedCommands ---------------- {Get-SmbShare, New-SmbShare, Remove-SmbShare, Set-SmbShare, Get-SmbShareAccess, Grant-SmbShareAccess, Block-SmbShareAccess, Revoke-SmbShareAccess, Get-SmbMapping}
Esta saída mostra todos os cmdlets que você pode usar a partir do módulo SmbShare. Cada comando serve a um propósito específico para gerenciar compartilhamentos SMB:
- Get-SmbShare: Lista todos os compartilhamentos SMB no sistema
- New-SmbShare: Cria um novo compartilhamento SMB
- Remove-SmbShare: Exclui um compartilhamento SMB existente
- Set-SmbShare: Modifica propriedades de um compartilhamento existente
Compreender quais comandos estão disponíveis ajuda você a escolher a ferramenta certa para sua tarefa. Você pode usar comandos similares para explorar as capacidades de outros módulos.
Importando Módulos Automaticamente
Para ver como o PowerShell lida com módulos dinamicamente, aqui está um exemplo mostrando o carregamento dinâmico do módulo:
PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} PS> Get-SmbShare PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare...}
Como mostrado acima, quando você executa Get-SmbShare, o PowerShell importa automaticamente o módulo SmbShare. Você pode ver que este módulo aparece na lista após executar o comando.
Removendo e Re-importando Módulos
Você pode precisar limpar um módulo da memória, como ao testar novas configurações ou resolver conflitos. Se precisar, não se preocupe; o PowerShell permite que você remova um módulo sem desinstalá-lo, permitindo redefinir ou atualizar a sessão conforme necessário.
Para remover um módulo da memória:
Remove-Module -Name SmbShare
O cmdlet Remove-Module
limpa o módulo da memória, mas não o desinstala do sistema. Embora a remoção de módulos seja rara no uso diário, é útil para cenários específicos.
Para importar manualmente o módulo de volta:
Import-Module -Name SmbShare
A importação manual pode ser útil ao solucionar problemas ou trabalhar em ambientes personalizados.
Reimportando Módulos Após Alterações
Ao trabalhar em um módulo em desenvolvimento, você pode encontrar situações em que as alterações feitas não entram imediatamente em vigor. Dados ou configurações antigas ainda podem estar carregados no módulo, causando esse comportamento.
A reimportação do módulo garante que o PowerShell utilize a versão mais recente. Se você modificar um módulo que está desenvolvendo, é necessário reimportá-lo.
Você pode usar tanto Remove-Module
quanto Import-Module
ou simplificar o processo com o parâmetro Force
:
Import-Module -Name SmbShare -Force
O parâmetro Force
descarrega e recarrega o módulo em uma etapa, tornando-o ideal para fluxos de trabalho de desenvolvimento e teste.
Conclusão
Neste guia, você aprendeu como gerenciar módulos do PowerShell—verificando importações e importando, removendo e reimportando módulos. Você também explorou como o PowerShell importa dinamicamente módulos e como controlar o carregamento para solucionar problemas ou testar configurações personalizadas manualmente.
Agora, aplique essas habilidades experimentando com módulos personalizados em seus scripts. Explore o desenvolvimento de módulos e use o parâmetro Force
para garantir que as alterações entrem em vigor.
Melhore sua solução de problemas, desenvolvimento de scripts e fluxo de trabalho geral do PowerShell com módulos do PowerShell!
Source:
https://adamtheautomator.com/powershell-modules-guide-2/