Pagina inicial » como » Geek School Saiba como estender o PowerShell

    Geek School Saiba como estender o PowerShell

    O PowerShell oferece duas maneiras para você estender o shell. Você pode usar snapins, que são apenas binários e desenvolvidos em uma linguagem de programação completa como o C #, ou você pode usar módulos, que podem ser binários, bem como baseados em script.

    Não deixe de ler os artigos anteriores da série:

    • Aprenda a automatizar o Windows com o PowerShell
    • Aprendendo a usar cmdlets no PowerShell
    • Aprendendo como usar objetos no PowerShell
    • Aprendendo a formatar, filtrar e comparar no PowerShell
    • Aprenda a usar o Remoting no PowerShell
    • Usando o PowerShell para obter informações sobre o computador
    • Trabalhando com coleções no PowerShell

    E fique ligado para o resto da série durante toda a semana.

    Snapins

    Snapins são tão no ano passado. Todas as piadas à parte, os snap-ups nunca são realmente capturados pela comunidade do PowerShell porque a maioria dos criadores de scripts não são desenvolvedores e você só pode escrever snapins em uma linguagem como C #. No entanto, ainda existem alguns produtos que usam snapins, como o Web Deploy, por exemplo. Para ver quais snapins estão disponíveis para você usar no shell, use o seguinte comando:

    Get-PSSnapin -Registered

    Para usar os comandos adicionados por um snapin, primeiro você precisa importá-lo para a sua sessão, e você pode fazer isso da seguinte maneira:

    Add-PSSnapin -Name WDeploySnapin3.0

    Neste ponto, você receberá um erro se não tiver o snap-in do Web Deploy instalado. Se você o tiver instalado, como eu faço, ele será importado para a sua sessão. Para obter uma lista de comandos disponíveis no snap-in, você pode simplesmente usar o cmdlet Get-Command:

    Get-Command -Módulo WDeploy *

    Nota: Tecnicamente, isso não é um módulo, mas, por algum motivo, você ainda precisa usar o parâmetro Module.

    Módulos

    Os módulos são mais recentes e são o caminho a seguir. Eles podem ser roteirizados usando o PowerShell, bem como codificados em uma linguagem como C #. A maioria dos comandos internos também é organizada em módulos. Para ver uma lista de módulos no seu sistema, você pode usar o seguinte comando:

    Get-Module -ListAvailable

    À medida que os produtos são atualizados, suas contrapartes do PowerShell estão sendo migradas para módulos. Por exemplo, o SQL costumava ter um snapin, mas agora é composto de módulos.

    Para usar um módulo, você precisa importá-lo primeiro.

    Import-Module -Name SQLASCMDLETS

    Você pode usar o mesmo truque que usamos com snapins para ver todos os comandos que o módulo adicionou ao shell.

    Então, isso deixa a pergunta: como o PowerShell sabe quais snapins e módulos você tem em seu sistema? Bem, snapins são um pouco dolorosos e precisam ser instalados. Parte do processo de instalação inclui a criação de algumas entradas de registro que o PowerShell examina para localizar informações de snap-in. Os módulos, por outro lado, podem ser registrados com o shell simplesmente colocando-os em um dos locais na variável de ambiente PSModulePath. Alternativamente, você poderia apenas adicionar o caminho para o módulo para a variável de ambiente.

    ($ env: PSModulePath) .Split (“;”)

    Isso vai cuspir o conteúdo da variável. Observe que, se você tiver um módulo como o SQL instalado, como ele modificou a variável para incluir a localização do módulo SQL.

    Carregamento Automático do Módulo

    O PowerShell 3 introduziu um novo recurso incrível com poucos nomes. Nenhum deles é oficial, mas "Module Auto Loading" é a melhor descrição dele. Basicamente, ele permite que você use cmdlets que pertencem a um módulo externo sem importar explicitamente o módulo usando o cmdlet Import-Module. Para ver isso, primeiro remova todos os módulos do seu shell usando o seguinte comando:

    Get-Module | Remover módulo

    Você pode verificar se você não tem módulos carregados usando o seguinte:

    Get-Module

    Agora use um cmdlet que não esteja na biblioteca principal. A conexão de teste é boa:

    Host local de conexão de teste

    Se você verificar seus módulos carregados novamente, verá que eles realmente carregaram o módulo.

    É tudo por hoje rapazes, junte-se a nós amanhã para mais.