Como Importar Módulos do PowerShell Como um Profissional

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

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

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

Pré-requisitos

Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de ter um sistema com o 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é-construído que você pode usar em seus scripts do PowerShell, economizando tempo e esforço. Ao importar módulos do PowerShell, você aproveita códigos pré-construídos em vez de começar do zero.

Mas como importar 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 pesquisar o módulo PSDiagnostics e carregá-lo na memória. Se for bem-sucedido, o módulo será importado, mas o comando não produzirá 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 das dependências e do gerenciamento de versões para você.

Depois de ter importado o módulo, você pode usar qualquer um dos cmdlets ou funções do módulo para ajudar a diagnosticar e solucionar problemas. O cmdlet Enable-PSTrace é apenas um exemplo dos cmdlets fornecidos pelo módulo PSDiagnostics, que permite 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 registrados em um arquivo.

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

Alguns módulos podem exigir configuração ou preparação adicionais 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.

Execute o comando abaixo para pesquisar vários módulos (Dism, PowerShellGet, PSReadline) e carregá-los na memória. Assim como importar 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 foi realmente 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. Esse parâmetro diz ao PowerShell para exibir informações detalhadas sobre o comando conforme ele está sendo executado. Por sua vez, você obtém o valioso feedback 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 várias 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 (criando novos compartilhamentos) e Remove-SmbShare (removendo compartilhamentos existentes).

Displaying module import details

Reimportando um Módulo na Mesma Sessão

Seja porque seu módulo está agindo de forma estranha ou simplesmente porque você quer garantir que está usando a versão mais atualizada do seu módulo, reimportar um PowerShell é benéfico. Como? Ao adicionar 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 precisar fechar e reabrir sua sessão do PowerShell.

Um caso de uso comum para reinspeção de um módulo é quando você está desenvolvendo e fazendo alterações em um módulo. Você pode reinspecionar 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 reinspecionar 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. Este 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 reinspecionado.

Import-Module SmbShare -Force -Prefix New

Agora, execute o Get-Command abaixo para recuperar uma lista de todos os cmdlets e funções fornecidos pelo módulo SmbShare selecionados (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 New adicionado aos seus nomes. Esta saída confirma que o módulo foi reimportado 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 PowerShell Gallery. Mas e se o módulo que você procura não estiver lá?

Você pode instalar e importar manualmente módulos do PowerShell a partir de um pacote NuGet. No contexto do PowerShell, um pacote NuGet é uma coleção de arquivos que inclui 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. Acesse a página do Azure PowerShell Gallery do módulo Az.Automation.

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

Downloading the raw NuGet package (nupkg) file

3. Após o download, 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 para o local 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 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 .nupkg baixado em 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.

O conteúdo extraído de um pacote NuGet inclui 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 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 atuais do módulo do seu shell. Este comando retorna uma lista de todos os caminhos de módulo padrão em seu sistema. O PowerShell pesquisa esses caminhos para carregar módulos automaticamente quando o nome do módulo é especificado em um script ou comando.

$env:PSModulePath

Anote 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 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 revolucionários. E neste tutorial, você aprendeu várias 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 explorou 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 o aprendizado não precisa parar por aí. Por que não 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/