PowerShell 101: Importando Módulos

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á o detalhe: 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 abrange 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 sem problemas, seja solucionando erros inesperados ou trabalhando em módulos personalizados.

Explore e deixe que os módulos do PowerShell ajudem você 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 estã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 conforme o esperado e torná-los disponíveis.

Para visualizar os módulos atualmente importados, use:

Get-Module

Ao executar Get-Module, você 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 (Manifest, Script ou Binary), 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 em 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ê executa este comando, verá uma 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 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: Remove um compartilhamento SMB existente
  • Set-SmbShare: Modifica propriedades de um compartilhamento existente

Entender quais comandos estão disponíveis ajuda você a escolher a ferramenta certa para sua tarefa. Você pode usar comandos semelhantes para explorar as capacidades de outros módulos.

Importando Módulos Automaticamente

Para ver como o PowerShell lida com módulos de forma dinâmica, aqui está um exemplo que mostra o carregamento dinâmico de módulos:

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 Reimportando Módulos

Você pode precisar limpar um módulo da memória, como ao testar novas configurações ou resolver conflitos. Se sim, não se preocupe; o PowerShell permite que você remova um módulo sem desinstalá-lo, permitindo que você redefina ou atualize a sessão conforme necessário.

Para remover um módulo da memória:

Remove-Module -Name SmbShare

O Remove-Module cmdlet limpa o módulo da memória, mas não o desinstala do seu 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 novamente:

Import-Module -Name SmbShare

A importação manual pode ser útil ao solucionar problemas ou trabalhar em ambientes personalizados.

Re-importando Módulos Após Alterações

Ao trabalhar em um módulo em desenvolvimento, você pode encontrar situações em que as alterações que você faz não têm efeito imediato. Dados ou configurações antigos podem ainda estar carregados no módulo, causando esse comportamento.

Re-importar o módulo garante que o PowerShell use a versão mais recente. Se você modificar um módulo que está desenvolvendo, deve re-importá-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 um único passo, tornando-o ideal para fluxos de trabalho de desenvolvimento e teste.

Conclusão

Neste guia, você aprendeu a gerenciar módulos do PowerShell—verificando importações e importando, removendo e re-importando módulos. Você também explorou como o PowerShell importa módulos dinamicamente 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 tenham efeito.

Melhore sua resoluçã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/