Get-Module
Liste os módulos importados na sessão atual ou que podem ser importados do PSModulePath.
Sintaxe
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 cmdlet Get-Module
lista os módulos do PowerShell que foram importados, ou que podem ser importados, para uma sessão do PowerShell. Sem parâmetros, Get-Module
obtém módulos que foram importados para a sessão atual. O parâmetro ListAvailable é usado para listar os módulos que estão disponíveis para serem importados dos caminhos especificados no PSModulePath variável de ambiente ($env:PSModulePath
).
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 de módulo para outros cmdlets, como os cmdlets Import-Module
e Remove-Module
.
Get-Module
lista 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 comando Get-Module
não aciona uma importação automática. Você também pode importar os módulos para sua sessão usando o cmdlet Import-Module
.
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 cmdlet Import-PSSession
. Quando você usa comandos em módulos importados de outra sessão, os comandos são executados implicitamente na sessão remota. Esta funcionalidade permite-lhe gerir o computador remoto a partir da sessão local.
Além disso, a partir do Windows PowerShell 3.0, você pode usar Get-Module
e Import-Module
para obter e importar módulos CIM (Common Information Model). Os módulos CIM definem cmdlets 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++.
A comunicação remota implícita pode ser usada para gerenciar computadores remotos que tenham a comunicação remota do PowerShell habilitada.
Crie um PSSession no computador remoto e use o parâmetro PSSession de Get-Module
para obter os módulos do PowerShell na sessão remota. Quando você importa um módulo da sessão remota, os comandos importados são executados na sessão no computador remoto.
Você pode usar uma estratégia semelhante para gerenciar computadores que não têm a comunicação remota do PowerShell habilitada. Isso inclui computadores 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.
Comece criando uma sessão CIM no computador remoto. Uma sessão CIM é uma conexão com o WMI (Instrumentação de Gerenciamento do Windows) no computador remoto. Em seguida, use o parâmetro CIMSession de Get-Module
para obter módulos CIM da sessão CIM. Quando você importa um módulo CIM usando o cmdlet Import-Module
e, em seguida, executa os comandos importados, os comandos são executados implicitamente no computador remoto. Você pode usar essa estratégia 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 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 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 pelo seu nome totalmente qualificado
$FullyQualifiedName = @{ModuleName="Microsoft.PowerShell.Management";ModuleVersion="3.1.0.0"}
Get-Module -FullyQualifiedName $FullyQualifiedName | Format-Table -Property Name, Version
Name Version
---- -------
Microsoft.PowerShell.Management 3.1.0.0
Este exemplo 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 cmdlet Format-Table
para formatar os resultados como uma tabela com Name e Version como cabeçalhos de coluna.
Em um nome totalmente qualificado para um módulo, o valor ModuleVersion atua como versão mínima. Portanto, para este exemplo, ele corresponde a qualquer módulo de Microsoft.PowerShell.Management que seja versão 3.1.0.0
ou superior.
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
Este 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 Propriedades PSModuleInfo.
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
Este comando obtém todos os arquivos de módulo, importados e disponíveis, e os agrupa por nome de módulo. Isso permite que você veja os arquivos de módulo que cada script está exportando.
Exemplo 7: Exibir o conteúdo de um manifesto de módulo
Esses comandos exibem o conteúdo do manifesto do módulo para o módulo Windows PowerShell BitsTransfer.
Os módulos não precisam 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 geralmente 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 variável $m
.
O segundo comando usa o cmdlet Get-Content
para obter o conteúdo do arquivo de manifesto no caminho especificado. Ele usa 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
Este 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 arquivos Leiame que descrevem o módulo.
Exemplo 9: Obter módulos instalados em um computador
$s = New-PSSession -ComputerName Server01
Get-Module -PSSession $s -ListAvailable
Esses comandos obtêm os módulos instalados no computador Server01.
O primeiro comando usa o cmdlet New-PSSession
para criar um PSSession no computador Server01. O comando salva o PSSession na variável $s
.
O segundo comando usa os parâmetros PSSession e ListAvailable de Get-Module
para obter os módulos no PSSession na variável $s
.
Se você canalizar módulos de outras sessões para o cmdlet Import-Module
, Import-Module
importará o módulo para a sessão atual usando o recurso de comunicação remota implícita. Isso equivale a usar o cmdlet Import-PSSession
. Você pode usar os cmdlets do módulo na sessão atual, mas os comandos que usam esses cmdlets realmente 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 gerenciar 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 de 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 cmdlet New-CimSession
para criar uma sessão no computador remoto RSDGF03. A sessão se conecta ao WMI no computador remoto. O comando salva a sessão CIM na variável $cs
.
O segundo comando usa a sessão CIM na variável $cs
para executar um comando Get-Module
no computador RSDGF03. O comando usa o parâmetro Name para especificar o módulo Storage. O comando usa um operador de pipeline (|
) para enviar o módulo de armazenamento para o cmdlet Import-Module
, que o importa para a sessão local.
O terceiro comando executa o cmdlet Get-Command
no comando Get-Disk
no módulo Storage.
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 comando Get-Disk
. Embora o comando seja digitado na sessão local, ele é executado implicitamente no computador remoto do qual foi importado. O comando obtém objetos do computador remoto e os retorna à 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 do módulo.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | 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 Descoberta de Módulo.
Use este parâmetro para obter módulos CIM de computadores e dispositivos que não estejam executando o sistema operacional Windows.
Esse parâmetro foi introduzido no Windows PowerShell 3.0.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-CimResourceUri
Especifica um local alternativo para módulos CIM. O valor padrão é o URI do recurso do provedor WMI de Descoberta de Módulo no computador remoto.
Use este parâmetro para obter módulos CIM de computadores e dispositivos que não estejam executando o sistema operacional Windows.
Esse parâmetro foi introduzido no Windows PowerShell 3.0.
Tipo: | Uri |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-CimSession
Especifica uma sessão CIM no computador remoto. Insira uma variável que contenha a sessão CIM ou um comando que obtenha 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 cmdlet Import-Module
e usa os comandos do módulo importado na sessão atual, os comandos são realmente 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 no CIMSession. No entanto, você pode importar apenas módulos baseados em CIM e CDXML (Cmdlet Definition XML).
Tipo: | CimSession |
Position: | Named |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-FullyQualifiedName
O valor pode ser um nome de módulo, uma especificação de módulo completo ou um caminho para um arquivo de módulo.
Quando o valor é um caminho, o caminho pode ser totalmente qualificado ou relativo. Um caminho relativo é resolvido em relação ao script que contém a instrução using.
Quando o valor é um nome ou especificação de módulo, o PowerShell procura o módulo especificado PSModulePath.
Uma especificação de módulo é uma hashtable que tem as seguintes chaves.
-
ModuleName
- Obrigatório Especifica o nome do módulo. -
GUID
- Opcional Especifica o GUID do módulo. - Também é Obrigatório especificar pelo menos uma das três chaves abaixo.
-
ModuleVersion
- Especifica uma versão mínima aceitável do módulo. -
MaximumVersion
- Especifica a versão máxima aceitável do módulo. -
RequiredVersion
- Especifica uma versão exata e necessária do módulo. Isso não pode ser usado com as outras chaves de versão.
-
Não é possível especificar o parâmetro FullyQualifiedName no mesmo comando que um parâmetro Name.
Tipo: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | 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.
ListAvailable não retorna informações sobre módulos que não são encontrados na variável de ambiente PSModulePath, mesmo que esses módulos sejam carregados na sessão atual.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Name
Especifica nomes ou padrões de nome 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.
Nome não pode aceitar um GUID de módulo como um valor. Para retornar módulos especificando um GUID, use FullyQualifiedName em vez disso.
Tipo: | String[] |
Position: | 0 |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | True |
-PSEdition
Obtém os módulos que dão suporte à edição especificada do PowerShell.
Os valores aceitáveis para este parâmetro são:
Desktop
Core
O cmdlet Get-Module
verifica propriedade CompatiblePSEditions de objeto de PSModuleInfo para o valor especificado e retorna apenas os módulos que o têm definido.
Observação
- Desktop Edition: Construído no .NET Framework e fornece compatibilidade com scripts e módulos destinados a versões do PowerShell em execução em edições completas do Windows, como Server Core e Windows Desktop.
- Core Edition: Construído no .NET Core e fornece compatibilidade com scripts e módulos destinados a versões do PowerShell em execução em edições de espaço reduzido do Windows, como Nano Server e Windows IoT.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-PSSession
Obtém os módulos na sessão do PowerShell gerenciada pelo usuário especificada (PSSession). Insira uma variável que contenha a sessão, um comando que obtenha a sessão, como um comando Get-PSSession
, ou um comando que crie a sessão, como um comando New-PSSession
.
Quando a sessão é conectada a um computador remoto, você deve especificar o ListAvailable parâmetro.
Um comando Get-Module
que usa o parâmetro PSSession é equivalente a usar o cmdlet Invoke-Command
para executar um comando Get-Module -ListAvailable
em um PSSession.
Esse parâmetro foi introduzido no Windows PowerShell 3.0.
Tipo: | PSSession |
Position: | Named |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Refresh
Indica que esse cmdlet atualiza o cache de comandos instalados. O cache de comandos é criado quando a sessão é iniciada. Ele permite que o cmdlet Get-Command
obtenha comandos de módulos que não são importados para a sessão.
Este parâmetro foi projetado para cenários de desenvolvimento e teste nos quais o conteúdo dos módulos foi alterado desde o início da sessão.
Ao especificar o parâmetro Refresh em um comando, você deve especificar ListAvailable.
Esse parâmetro foi introduzido no Windows PowerShell 3.0.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-SkipEditionCheck
Ignora a verificação do campo CompatiblePSEditions .
Por padrão, Get-Module
omite módulos no diretório %windir%\System32\WindowsPowerShell\v1.0\Modules
que não especificam Core
no campo CompatiblePSEditions. Quando essa opção é definida, os módulos sem Core
são incluídos, para que os módulos no caminho do módulo do Windows PowerShell que são incompatíveis com o PowerShell v6 e superior sejam retornados.
No macOS e Linux, esse parâmetro não faz nada.
Consulte about_PowerShell_Editions para obter mais informações.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
Entradas
Você pode canalizar nomes de módulo para este cmdlet.
Saídas
Este 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.
Notas
O PowerShell inclui os seguintes aliases para Get-Module
:
Todas as plataformas:
gmo
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, apenas o snap-in Microsoft.PowerShell.Core é adicionado à sessão. Os módulos são importados automaticamente na primeira utilização e você pode usar o cmdlet
Import-Module
para importá-los.No Windows PowerShell 2.0 e em programas host que criam sessões de estilo mais antigo em versões posteriores do PowerShell, os comandos principais são empacotados em snap-ins (PSSnapins). A exceção é Microsoft.PowerShell.Core, que é sempre um snap-in. Além disso, as sessões remotas, como as iniciadas pelo cmdlet
New-PSSession
, são sessões de estilo mais antigo que incluem snap-ins principais.Para obter informações sobre o método de CreateDefault2 que cria sessões de estilo mais recente com módulos principais, consulte Método CreateDefault2.
Get-Module
só obtém módulos em locais armazenados no valor da variável de ambiente PSModulePath ($env:PSModulePath
). O cmdletImport-Module
pode importar módulos em outros locais, mas você não pode usar o cmdletGet-Module
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. Estes incluem o ExportedCommands, ExportedCmdlets e ExportedFunctions propriedades que listam os comandos que o módulo exporta.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. As 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 o ListAvailable e Todos os parâmetros.
Para usar o recurso de sessão CIM, o computador remoto deve ter comunicação remota WS-Management e WMI (Instrumentação de Gerenciamento do Windows), que é a implementação da Microsoft do padrão CIM (Common Information Model). O computador também deve ter o provedor WMI de Descoberta de Módulo ou um provedor WMI alternativo que tenha os mesmos recursos básicos.
Você pode usar o recurso de sessão CIM em computadores que não executam o sistema operacional Windows e em computadores Windows que têm 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.