Como Importar Módulos do PowerShell Como um Profissional

O PowerShell é uma linguagem de script robusta fenomenal. Mas para desbloquear seu potencial, você deve saber como importar os módulos corretos.

Neste tutorial, você aprenderá tudo o que precisa saber para importar módulos do PowerShell como um profissional. Com um entendimento profundo dos cmdlets, parâmetros e módulos, você pode criar scripts mais rápidos, eficientes e eficazes do que nunca.

Continue lendo para potencializar suas habilidades no PowerShell e elevar seu jogo de script a novos patamares!

Pré-requisitos

Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de ter um sistema com PowerShell instalado. Este tutorial usa o Windows 10 e o PowerShell 5.1 como exemplo, mas os mesmos comandos devem funcionar com a maioria das versões do Windows e do PowerShell.

Importando um Único Módulo

Os módulos do PowerShell contêm código pré-criado que você pode usar em seus scripts do PowerShell, economizando tempo e esforço. Quando você importa módulos do PowerShell, você aproveita códigos pré-criados em vez de começar do zero.

Mas como você importa módulos do PowerShell? O Import-Module cmdlet é a maneira principal de importar módulos no PowerShell. Importar um único módulo é um dos usos mais básicos do Import-Module cmdlet, que é a primeira coisa que você aprenderá neste tutorial.

Abra o PowerShell como administrador e execute o comando Import-Module abaixo para procurar o módulo PSDiagnostics e carregá-lo na memória. Se bem-sucedido, o módulo é importado, mas o comando não produz saída.

Import-Module PSDiagnostics

Importar módulos de repositórios online via cmdlet Install-Module é altamente recomendado sempre que possível. Este cmdlet cuida de dependências e gerenciamento de versões para você.

Assim que você tiver importado o módulo, você pode usar qualquer um dos cmdlets ou funções do módulo para ajudar a diagnosticar e resolver problemas. O cmdlet Enable-PSTrace é apenas um exemplo dos cmdlets fornecidos pelo módulo PSDiagnostics, que habilita o rastreamento de diagnóstico no PowerShell.

Agora, execute o seguinte comando Enable-PSTrace para realizar o rastreamento de diagnóstico e salvar os resultados no caminho especificado -TraceFilePath (C:\\MyTrace.log). Este comando não fornece saída para o console, pois os resultados são gravados em um arquivo.

Enable-PSTrace -TraceLevel 1 -TraceFilePath C:\MyTrace.log

Alguns módulos podem exigir configuração ou setup adicional antes de serem utilizados. Certifique-se de ler a documentação fornecida com o módulo para entender quaisquer pré-requisitos ou requisitos.

Importando Múltiplos Módulos de Uma Vez

Importar um único módulo funciona bem. Mas quando você precisa importar frequentemente vários módulos de uma vez, a tarefa também está ao alcance do cmdlet Import-Module.

Importar vários módulos é uma ótima maneira de economizar tempo e esforço no PowerShell. Mas como exatamente? Você irá especificar os nomes dos módulos separados por vírgulas.

Executa o comando abaixo para pesquisar vários módulos (Dism, PowerShellGet, PSReadline) e carregá-los na memória. Assim como a importação de um único módulo, este comando não fornece saída.

Import-Module Dism, PowerShellGet, PSReadline

Exibindo Detalhes da Importação do Módulo

Como mencionado anteriormente, a importação bem-sucedida do módulo não fornece saída. Mas admita, você ficaria cético se o módulo realmente foi importado ou não.

O parâmetro -Verbose é uma opção útil que você pode usar com muitos cmdlets e funções do PowerShell, incluindo o cmdlet Import-Module. Este parâmetro diz ao PowerShell para exibir informações detalhadas sobre o comando enquanto está sendo executado. Como resultado, você obtém um feedback valioso que pode ser usado para solução de problemas e depuração.

Execute o seguinte comando para importar o módulo SmbShare, adicionando o parâmetro -Verbose para imprimir os detalhes da importação do módulo.

Import-Module SmbShare -Verbose

Como você pode ver abaixo, o parâmetro -Verbose fornece informações detalhadas sobre o arquivo do módulo sendo carregado e diversas funções sendo importadas do módulo. Essas informações podem ajudar a entender o funcionamento interno do módulo.

Neste caso, o módulo SmbShare fornece cmdlets para gerenciar compartilhamentos SMB em máquinas Windows. Esses cmdlets incluem, mas não se limitam a, New-SmbShare (criação de novos compartilhamentos) e Remove-SmbShare (remoção de compartilhamentos existentes).

Displaying module import details

Reimportando um Módulo na Mesma Sessão

Seja porque o seu módulo está agindo de forma estranha ou você apenas quer garantir que está usando a versão mais atualizada do seu módulo, reintegrar um PowerShell é propício. Como? Adicionando o parâmetro -Force ao comando Import-Module.

Este parâmetro -Force permite que você continue usando os cmdlets e funções fornecidos pelo módulo sem ter que fechar e reabrir sua sessão do PowerShell.

Um caso de uso comum para reinportar um módulo é quando você está desenvolvendo e fazendo alterações em um módulo. Você pode reinportar o módulo em sua sessão atual para testar essas alterações antes de finalizá-las.

Execute o seguinte comando para -Force o PowerShell remover e reinportar o módulo SmbShare de sua localização original.

O parâmetro -Prefix permite que você especifique um prefixo para os cmdlets e funções importados do módulo. Neste caso, todos os cmdlets e funções importados serão precedidos por New. Esse parâmetro pode ser útil para evitar conflitos com cmdlets ou funções existentes em sua sessão.

Por exemplo, o cmdlet Get-SmbShare no módulo original se tornará Get-NewSmbShare no módulo reinportado.

Import-Module SmbShare -Force -Prefix New

Agora, execute o Get-Command abaixo para obter uma lista de todos os cmdlets e funções fornecidos pelo módulo SmbShare selecionado (Select-Object) por Nome.

Get-Command -Module SmbShare | Select-Object Name

Abaixo, você pode ver que os cmdlets do módulo SmbShare agora têm o prefixo Novo adicionado aos seus nomes. Esta saída confirma que o módulo foi reimporado com sucesso.

Verifying the SmbShare module has been reimported

Usando Pacotes NuGet para Importar Manualmente Módulos do PowerShell

Até agora, você importou com sucesso módulos da Galeria do PowerShell. Mas e se o módulo que você está procurando não estiver lá?

Você pode instalar e importar manualmente módulos do PowerShell de um pacote NuGet. No contexto do PowerShell, um pacote NuGet é uma coleção de arquivos que incluem um módulo do PowerShell juntamente com quaisquer módulos ou bibliotecas dependentes necessários para o funcionamento do módulo.

Para importar um módulo de um pacote NuGet, você precisa baixar, extrair e instalar manualmente o pacote NuGet com as seguintes etapas:

1. Navegue até a página da Galeria do PowerShell do Azure PowerShell Gallery do módulo Az.Automation.

2. Em seguida, clique na aba Download ManualBaixar o arquivo nupkg bruto para baixar o pacote. Este tutorial utiliza o módulo Az.Automation 1.9.1 da galeria do PowerShell do Azure como exemplo. Mas os mesmos passos se aplicam a outros pacotes NuGet.

Downloading the raw NuGet package (nupkg) file

3. Depois de baixado, execute o comando Unblock-File abaixo, que não fornece saída, mas desbloqueia o arquivo .nupkg baixado. Certifique-se de alterar o caminho do arquivo pelo caminho onde você baixou o pacote.

Desbloquear o pacote é necessário. Por quê? O PowerShell pode não permitir a execução de arquivos baixados da internet como uma medida de segurança para evitar a execução de scripts potencialmente prejudiciais

Unblock-File -Path C:\PSModules\az.automation.1.9.1.nupkg

4. Agora, descompacte o arquivo baixado .nupkg para uma pasta em sua máquina local. Você pode precisar de uma ferramenta de compressão/descompressão como 7-zip ou WinRAR para descompactar o pacote. Um pacote NuGet é um arquivo ZIP contendo uma coleção de arquivos que compõem um módulo.

5. Exclua o seguinte conteúdo da pasta extraída.

Os conteúdos extraídos de um pacote NuGet incluem alguns metadados e arquivos que não são necessários para a instalação manual do módulo.

Name Type
_rels Folder
Package Folder
[Content_Types].xml XML File
Az.Automation.nuspec XML Manifest File
Deleting unnecessary contents from the extracted NuGet package folder

6. Renomeie sua pasta extraída com um nome mais descritivo como az.automation para evitar quaisquer erros que possam surgir. Lembre-se de manter todas as letras em minúsculas e abster-se de usar caracteres especiais em seu nome.

7. Em seguida, execute o comando $env:PSModulePath abaixo para encontrar os caminhos dos módulos do shell atuais. Este comando retorna uma lista de todos os caminhos de módulos padrão em seu sistema. O PowerShell pesquisa esses caminhos para carregar automaticamente os módulos quando o nome do módulo é especificado em um script ou comando.

$env:PSModulePath

Anota os caminhos, pois você precisará deles na etapa seguinte.

Finding out where your modules’ paths are located

8. Copie a pasta recém-nomeada (az.automation) para um dos diretórios que você anotou no passo sete. Fazê-lo define o escopo do módulo (específico ou para todos os usuários).

Path Function
C:\Users\admin\Documents\WindowsPowerShell\Modules Makes the module available for the specific user account (admin). This tutorial uses this location as an example.
C:\Program Files\WindowsPowerShell\Modules Makes the module available for all user accounts on your local machine.

9. Agora, execute o comando abaixo para instalar e importar o módulo (az.automation) em sua sessão do PowerShell. Certifique-se de substituir az.automation pelo nome real do seu módulo.

Import-Module -Name az.automation -Verbose
Installing and importing a module from a NuGet package

10. Por fim, execute o seguinte comando Get-Module para verificar se o módulo (az.automation) foi importado com sucesso.

Get-Module -Name az.automation
Verifying the module has been imported successfully

Talvez você não queira depender da descoberta automática. Se for o caso, especifique o local exato do arquivo (C:\az.automation) ao importar o módulo.

Import-Module -Name C:\az.automation -Verbose
Specifying the exact file location when importing a module

Conclusão

Com funções conjugadas ou código agrupado, os módulos do PowerShell são agentes de mudança. E neste tutorial, você aprendeu amplas maneiras de importar módulos do PowerShell em suas sessões, incluindo a importação manual de módulos de um pacote NuGet. Você também abordou diferentes parâmetros que controlam o processo de importação.

Ao dominar essas técnicas, você pode facilmente importar e usar módulos para aprimorar seus scripts de automação. Mas a aprendizagem não precisa parar por aí. Que tal levar suas habilidades de gerenciamento de módulos do PowerShell para o próximo nível, aprendendo a exportar membros do módulo?

Source:
https://adamtheautomator.com/import-powershell-modules/