Get-Module

Obtém os módulos que foram importados ou podem ser importados para a sessão atual.

Syntax

Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-All]
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-All]
   [-ListAvailable]
   [-PSEdition <String>]
   [-SkipEditionCheck]
   [-Refresh]
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-ListAvailable]
   [-PSEdition <String>]
   [-SkipEditionCheck]
   [-Refresh]
   -PSSession <PSSession>
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-ListAvailable]
   [-SkipEditionCheck]
   [-Refresh]
   -CimSession <CimSession>
   [-CimResourceUri <Uri>]
   [-CimNamespace <String>]
   [<CommonParameters>]

Description

O Get-Module cmdlet obtém os módulos do PowerShell que foram importados ou que podem ser importados para uma sessão do PowerShell. O objeto de módulo que Get-Module retorna contém informações valiosas sobre o módulo. Você também pode canalizar os objetos do módulo para outros cmdlets, como o e Remove-Module os Import-Module cmdlets.

Sem parâmetros, Get-Module obtém módulos que foram importados para a sessão atual. Para obter todos os módulos instalados, especifique o parâmetro ListAvailable .

Get-Module obtém módulos, mas não os importa. A partir do Windows PowerShell 3.0, os módulos são importados automaticamente quando você usa um comando no módulo, mas um Get-Module comando não dispara uma importação automática. Você também pode importar os módulos para sua sessão usando o Import-Module cmdlet.

A partir do Windows PowerShell 3.0, você pode obter e, em seguida, importar módulos de sessões remotas para a sessão local. Essa estratégia usa o recurso de Comunicação Remota Implícita do PowerShell e é equivalente ao uso do Import-PSSession cmdlet. Quando você usa comandos em módulos importados de outra sessão, os comandos são executados implicitamente na sessão remota. Esse recurso permite que você gerencie o computador remoto da sessão local.

Além disso, começando no Windows PowerShell 3.0, você pode usar Get-Module e Import-Module importar módulos CIM (Common Information Model), nos quais os cmdlets são definidos em arquivos CDXML (Cmdlet Definition XML). Esse recurso permite que você use cmdlets que são implementados em assemblies de código não gerenciados, como aqueles escritos em C++.

Com esses novos recursos, os cmdlets e Import-Module os Get-Module cmdlets se tornam ferramentas principais para gerenciar empresas heterogêneas que incluem computadores que executam o sistema operacional Windows e computadores que executam outros sistemas operacionais.

Para gerenciar computadores remotos que executam o sistema operacional Windows que têm a comunicação remota do PowerShell e do PowerShell habilitadas, crie uma PSSession no computador remoto e use o parâmetro Get-ModulePSSession para obter os módulos do PowerShell no PSSession. Quando você importa os módulos e usa os comandos importados na sessão atual, os comandos são executados implicitamente na PSSession no computador remoto. Você pode usar essa estratégia para gerenciar o computador remoto.

Você pode usar uma estratégia semelhante para gerenciar computadores que não têm a comunicação remota do PowerShell habilitada. Eles incluem computadores que não estão executando o sistema operacional Windows e computadores que têm o PowerShell, mas que não têm a comunicação remota do PowerShell habilitada.

Comece criando uma sessão CIM no computador remoto. Uma sessão CIM é uma conexão com a WMI (Instrumentação de Gerenciamento do Windows) no computador remoto. Em seguida, use o parâmetro CIMSession para Get-Module obter módulos CIM da sessão CIM. Quando você importa um módulo CIM usando o Import-Module cmdlet e executa os comandos importados, os comandos são executados implicitamente no computador remoto. Você pode usar essa estratégia de WMI e CIM para gerenciar o computador remoto.

Exemplos

Exemplo 1: Obter módulos importados para a sessão atual

Get-Module

Este comando obtém módulos que foram importados para a sessão atual.

Exemplo 2: obter módulos instalados e módulos disponíveis

Get-Module -ListAvailable

Este comando obtém os módulos que estão instalados no computador e que podem ser importados para a sessão atual.

Get-Module procura módulos disponíveis no caminho especificado pela variável de ambiente $env:PSModulePath . Para obter mais informações sobre o PSModulePath, consulte about_Modules e about_Environment_Variables.

Exemplo 3: Obter todos os arquivos exportados

Get-Module -ListAvailable -All

Este comando obtém todos os arquivos exportados para todos os módulos disponíveis.

Exemplo 4: obter um módulo por seu nome totalmente qualificado

$FullyQualifedName = @{ModuleName="Microsoft.PowerShell.Management";ModuleVersion="3.1.0.0"}
Get-Module -FullyQualifiedName $FullyQualifedName | Format-Table -Property Name,Version

Name                             Version
----                             -------
Microsoft.PowerShell.Management  3.1.0.0

Esse comando obtém o módulo Microsoft.PowerShell.Management especificando o nome totalmente qualificado do módulo usando o parâmetro FullyQualifiedName . Em seguida, o comando canaliza os resultados para o Format-Table cmdlet para formatar os resultados como uma tabela com Nome e Versão como os títulos de coluna.

Exemplo 5: Obter propriedades de um módulo

Get-Module | Get-Member -MemberType Property | Format-Table Name

Name
----
AccessMode
Author
ClrVersion
CompanyName
Copyright
Definition
Description
DotNetFrameworkVersion
ExportedAliases
ExportedCmdlets
ExportedCommands
ExportedFormatFiles
ExportedFunctions
ExportedTypeFiles
ExportedVariables
ExportedWorkflows
FileList
Guid
HelpInfoUri
LogPipelineExecutionDetails
ModuleBase
ModuleList
ModuleType
Name
NestedModules
OnRemove
Path
PowerShellHostName
PowerShellHostVersion
PowerShellVersion
PrivateData
ProcessorArchitecture
RequiredAssemblies
RequiredModules
RootModule
Scripts
SessionState
Version

Esse comando obtém as propriedades do objeto PSModuleInfo que Get-Module retorna. Há um objeto para cada arquivo de módulo.

Você pode usar as propriedades para formatar e filtrar os objetos do módulo. Para obter mais informações sobre as propriedades, consulte PSModuleInfo Properties.

A saída inclui as novas propriedades, como Author e CompanyName, que foram introduzidas no Windows PowerShell 3.0.

Exemplo 6: Agrupar todos os módulos por nome

Get-Module -ListAvailable -All | Format-Table -Property Name, Moduletype, Path -Groupby Name

Name: AppLocker

Name      ModuleType Path
----      ---------- ----
AppLocker   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\AppLocker\AppLocker.psd1


   Name: Appx

Name ModuleType Path
---- ---------- ----
Appx   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\en-US\Appx.psd1
Appx   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\Appx.psd1
Appx     Script C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\Appx.psm1


   Name: BestPractices

Name          ModuleType Path
----          ---------- ----
BestPractices   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BestPractices\BestPractices.psd1


   Name: BitsTransfer

Name         ModuleType Path
----         ---------- ----
BitsTransfer   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BitsTransfer\BitsTransfer.psd1

Esse comando obtém todos os arquivos de módulo, importados e disponíveis e, em seguida, os agrupa pelo nome do módulo. Isso lhe permite visualizar os arquivos de módulo que cada script está exportando.

Exemplo 7: Exibir o conteúdo de um manifesto do módulo

Esses comandos exibem o conteúdo do manifesto do módulo do módulo Windows PowerShell BitsTransfer.

Os módulos não são necessários para ter arquivos de manifesto. Quando eles têm um arquivo de manifesto, o arquivo de manifesto é necessário apenas para incluir um número de versão. No entanto, os arquivos de manifesto muitas vezes fornecem informações úteis sobre um módulo, seus requisitos e seu conteúdo.

# First command
$m = Get-Module -list -Name BitsTransfer

# Second command
Get-Content $m.Path

@ {
    GUID               = "{8FA5064B-8479-4c5c-86EA-0D311FE48875}"
    Author             = "Microsoft Corporation"
    CompanyName        = "Microsoft Corporation"
    Copyright          = "Microsoft Corporation. All rights reserved."
    ModuleVersion      = "1.0.0.0"
    Description        = "Windows PowerShell File Transfer Module"
    PowerShellVersion  = "2.0"
    CLRVersion         = "2.0"
    NestedModules      = "Microsoft.BackgroundIntelligentTransfer.Management"
    FormatsToProcess   = "FileTransfer.Format.ps1xml"
    RequiredAssemblies = Join-Path $psScriptRoot "Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll"
}

O primeiro comando obtém o objeto PSModuleInfo, que representa o módulo BitsTransfer. Ele salva o objeto na $m variável.

O segundo comando usa o Get-Content cmdlet para obter o conteúdo do arquivo de manifesto no caminho especificado. Ele usa a notação de ponto para obter o caminho para o arquivo de manifesto, que é armazenado na propriedade Path do objeto. A saída mostra o conteúdo do manifesto do módulo.

Exemplo 8: Listar arquivos no diretório do módulo

dir (Get-Module -ListAvailable FileTransfer).ModuleBase

Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules\FileTransfer
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        12/16/2008  12:36 PM            en-US
-a---        11/19/2008  11:30 PM      16184 FileTransfer.Format.ps1xml
-a---        11/20/2008  11:30 PM       1044 FileTransfer.psd1
-a---        12/16/2008  12:20 AM     108544 Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll

Esse comando lista os arquivos no diretório do módulo. Esta é outra maneira de determinar o que está em um módulo antes de importá-lo. Alguns módulos podem ter arquivos de ajuda ou Leia-me, que descrevem o módulo.

Exemplo 9: obter módulos instalados em um computador

$s = New-PSSession -ComputerName Server01

Get-Module -PSSession $s -ListAvailable

Estes comandos obtêm os módulos instalados no computador Servidor01.

O primeiro comando usa o New-PSSession cmdlet para criar uma PSSession no computador Server01. O comando salva a PSSession na variável $s.

O segundo comando usa os parâmetros Get-ModulePSSession e ListAvailable para obter os módulos na PSSession na $s variável.

Se você canalizar módulos de outras sessões para o Import-Module cmdlet, Import-Module importará o módulo para a sessão atual usando o recurso de comunicação remota implícito. Isso é equivalente ao uso do Import-PSSession cmdlet. Você pode usar os cmdlets do módulo na sessão atual, mas os comandos que usam esses cmdlets, na verdade, executam a sessão remota. Para obter mais informações, consulte Import-Module e Import-PSSession.

Exemplo 10: Gerenciar um computador que não executa o sistema operacional Windows

Os comandos neste exemplo permitem que você gerencie os sistemas de armazenamento de um computador remoto que não esteja executando o sistema operacional Windows. Neste exemplo, como o administrador do computador instalou o provedor WMI de descoberta do módulo, os comandos CIM podem usar os valores padrão, que são projetados para o provedor.

$cs = New-CimSession -ComputerName RSDGF03
Get-Module -CimSession $cs -Name Storage | Import-Module
Get-Command Get-Disk

CommandType     Name                  ModuleName
-----------     ----                  ----------
Function        Get-Disk              Storage

Get-Disk

Number Friendly Name              OperationalStatus          Total Size Partition Style
------ -------------              -----------------          ---------- ---------------
0      Virtual HD ATA Device      Online                          40 GB MBR

O primeiro comando usa o New-CimSession cmdlet para criar uma sessão no computador remoto RSDGF03. A sessão conecta-se ao WMI no computador remoto. O comando salva a sessão CIM na $cs variável.

O segundo comando usa a sessão CIM na $cs variável para executar um Get-Module comando no computador RSDGF03. O comando usa o parâmetro Name para especificar o módulo de armazenamento. O comando usa um operador de pipeline (|) para enviar o módulo armazenamento para o Import-Module cmdlet, que o importa para a sessão local.

O terceiro comando executa o Get-Command cmdlet no Get-Disk comando no módulo armazenamento. Quando você importa um módulo CIM para a sessão local, o PowerShell converte os arquivos CDXML que representam o módulo CIM em scripts do PowerShell, que aparecem como funções na sessão local.

O quarto comando executa o Get-Disk comando. Embora o comando seja digitado na sessão local, ele é executado implicitamente no computador remoto do qual foi importado. O comando obtém os objetos por meio do computador remoto e os retorna para a sessão local.

Parâmetros

-All

Indica que esse cmdlet obtém todos os módulos em cada pasta de módulo, incluindo módulos aninhados, arquivos de manifesto (.psd1), arquivos de módulo de script (.psm1) e arquivos de módulo binário (.dll). Sem esse parâmetro, Get-Module obtém apenas o módulo padrão em cada pasta de módulo.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimNamespace

Especifica o namespace de um provedor CIM alternativo que expõe módulos CIM. O valor padrão é o namespace do provedor WMI de detecção de módulos.

Use esse parâmetro para obter módulos CIM de computadores e dispositivos que não estão executando o sistema operacional Windows.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimResourceUri

Especifica um local alternativo para módulos CIM. O valor padrão é o URI de recurso do provedor WMI de Descoberta de Módulo no computador remoto.

Use esse parâmetro para obter módulos CIM de computadores e dispositivos que não estão executando o sistema operacional Windows.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimSession

Especifica uma sessão CIM no computador remoto. Insira uma variável que contém a sessão CIM ou um comando que obtém a sessão CIM, como um comando Get-CimSession .

Get-Module usa a conexão de sessão CIM para obter módulos do computador remoto. Quando você importa o módulo usando o Import-Module cmdlet e usa os comandos do módulo importado na sessão atual, os comandos realmente são executados no computador remoto.

Você pode usar esse parâmetro para obter módulos de computadores e dispositivos que não estão executando o sistema operacional Windows e computadores que têm o PowerShell, mas não têm a comunicação remota do PowerShell habilitada.

O parâmetro CimSession obtém todos os módulos em CIMSession. Porém, você pode importar somente módulos baseados em CIM e baseados em XML de definição de cmdlets (CDXML).

Type:CimSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FullyQualifiedName

Especifica módulos com nomes especificados na forma de objetos ModuleSpecification . Consulte a seção Comentários do Construtor ModuleSpecification (Hashtable).

Por exemplo, o parâmetro FullyQualifiedModule aceita um nome de módulo especificado em qualquer um desses formatos:

  • @{ModuleName = "modulename"; ModuleVersion = "version_number"}
  • @{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}

ModuleName e ModuleVersion são obrigatórios, mas Guid é opcional. Não é possível especificar o parâmetro FullyQualifiedModule no mesmo comando que um parâmetro module . os dois parâmetros são mutuamente exclusivos.

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ListAvailable

Indica que esse cmdlet obtém todos os módulos instalados. Get-Module obtém módulos em caminhos listados na variável de ambiente PSModulePath . Sem esse parâmetro, Get-Module obtém apenas os módulos listados na variável de ambiente PSModulePath e que são carregados na sessão atual. O ListAvailable não retorna informações sobre os módulos que não são encontrados na variável de ambiente PSModulePath, mesmo que esses módulos estejam carregados na sessão atual.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Especifica nomes ou padrões de nomes de módulos que esse cmdlet obtém. Caracteres curinga são permitidos. Você também pode canalizar os nomes para Get-Module. Não é possível especificar o parâmetro FullyQualifiedName no mesmo comando que um parâmetro Name .

O nome não pode aceitar um GUID de módulo como um valor. Para retornar módulos especificando um GUID, use FullyQualifiedName .

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-PSEdition

Obtém os módulos que dão suporte à edição especificada do PowerShell.

Os valores aceitáveis para esse parâmetro são:

  • Área de Trabalho
  • Núcleo

O cmdlet Get-Module verifica a propriedade CompatiblePSEditions do objeto PSModuleInfo para o valor especificado e retorna apenas os módulos que o têm definido.

Observação

  • Desktop Edition: criado no .NET Framework; fornece compatibilidade com scripts e módulos destinados a versões do PowerShell em execução em edições de volume completo do Windows, como Server Core e Windows Desktop.
  • Core Edition: criada no .NET Core e oferece compatibilidade com scripts e módulos destinados a versões do PowerShell executando em edições de superfície reduzida do Windows, como o Nano Server e Windows IoT.
Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PSSession

Obtém os módulos na PSSession (sessão do PowerShell) gerenciada pelo usuário especificada. Insira uma variável que contém a sessão, um comando que obtém a sessão, como um Get-PSSession comando ou um comando que cria a sessão, como um New-PSSession comando.

Quando a sessão estiver conectada a um computador remoto, você deverá especificar o parâmetro ListAvailable .

Um Get-Module comando que usa o parâmetro PSSession é equivalente a usar o Invoke-Command cmdlet para executar um Get-Module -ListAvailable comando em um PSSession.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:PSSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Refresh

Indica que esse cmdlet atualiza o cache de comandos instalados. O cache de comando é criado no início da sessão. Ele permite que o Get-Command cmdlet obtenha comandos de módulos que não são importados para a sessão.

Este parâmetro é projetado para cenários de desenvolvimento e testes, nos quais o conteúdo dos módulos foi alterado desde o início da sessão.

Ao especificar o parâmetro Atualizar em um comando, você deve especificar ListAvailable.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipEditionCheck

Ignora a verificação do CompatiblePSEditions campo.

Por padrão, Get-Module omitirá módulos no %windir%\System32\WindowsPowerShell\v1.0\Modules diretório que não especificam Core no CompatiblePSEditions campo. Quando essa opção for definida, os módulos sem Core serão incluídos, para que os módulos no caminho do módulo Windows PowerShell incompatíveis com o PowerShell Core sejam retornados.

No macOS e no Linux, esse parâmetro não faz nada.

Consulte about_PowerShell_Editions para obter mais informações.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

String

Você pode canalizar nomes de módulo para este cmdlet.

Saídas

PSModuleInfo

Esse cmdlet retorna objetos que representam módulos. Quando você especifica o parâmetro ListAvailable , Get-Module retorna um objeto ModuleInfoGrouping , que é um tipo de objeto PSModuleInfo que tem as mesmas propriedades e métodos.

Observações

  • A partir do Windows PowerShell 3.0, os comandos principais incluídos no PowerShell são empacotados em módulos. A exceção é Microsoft.PowerShell.Core, que é um snap-in (PSSnapin). Por padrão, somente o snap-in Microsoft.PowerShell.Core é adicionado à sessão. Os módulos são importados automaticamente no primeiro uso e você pode usar o Import-Module cmdlet para importá-los.

  • A partir Windows PowerShell 3.0, os comandos principais instalados com o PowerShell são empacotados em módulos. No Windows PowerShell 2.0 e em programas de host que criam sessões de estilo mais antigo em versões posteriores do PowerShell, os comandos principais são empacotados em PSSnapins (snap-ins). A exceção é Microsoft.PowerShell.Core, que é sempre um snap-in. Além disso, sessões remotas, como as iniciadas pelo New-PSSession cmdlet, são sessões de estilo mais antigo que incluem snap-ins principais.

    Para obter informações sobre o método CreateDefault2 que cria sessões de estilo mais recente com módulos principais, consulte o Método CreateDefault2.

  • Get-Module só obtém módulos em locais armazenados no valor da variável de ambiente PSModulePath ($env:PSModulePath). Você pode usar o parâmetro Path do Import-Module cmdlet para importar módulos em outros locais, mas não pode usar o Get-Module cmdlet para obtê-los.

  • Além disso, a partir do PowerShell 3.0, novas propriedades foram adicionadas ao objeto que Get-Module retorna que facilitam o aprendizado sobre módulos antes mesmo de serem importados. Todas as propriedades são preenchidas antes da importação. Isso inclui as propriedades ExportedCommands, ExportedCmdlets e ExportedFunctions que listam os comandos exportados pelo módulo.

  • O parâmetro ListAvailable obtém apenas módulos bem formados, ou seja, pastas que contêm pelo menos um arquivo cujo nome base é o mesmo que o nome da pasta do módulo. O nome base é o nome sem a extensão de nome de arquivo. Pastas que contêm arquivos com nomes diferentes são consideradas contêineres, mas não módulos.

    Para obter módulos que são implementados como arquivos .dll, mas não estão incluídos em uma pasta de módulo, especifique os parâmetros ListAvailable e All .

  • Para usar o recurso de sessão CIM, o computador remoto deve ter comunicação remota do WS-Management e a Instrumentação de Gerenciamento do Windows (WMI), que é a implementação da Microsoft do padrão CIM. O computador também deve ter o provedor WMI de descoberta do módulo ou um provedor WMI alternativo com os mesmos recursos básicos.

    Você pode usar o recurso de sessão CIM em computadores que não estão executando o sistema operacional Windows e em computadores Windows que têm o PowerShell, mas não têm a comunicação remota do PowerShell habilitada.

    Você também pode usar os parâmetros cim para obter módulos CIM de computadores que têm a comunicação remota do PowerShell habilitada. Isso inclui o computador local. Quando você cria uma sessão CIM no computador local, o PowerShell usa dCOM, em vez de WMI, para criar a sessão.