Compartilhar via


Remove-Module

Remove módulos da sessão atual.

Syntax

Remove-Module
      [-Name] <String[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Module
      [-FullyQualifiedName] <ModuleSpecification[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Module
      [-ModuleInfo] <PSModuleInfo[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Description

O Remove-Module cmdlet remove os membros de um módulo, como cmdlets e funções, da sessão atual.

Se o módulo incluir um assembly (.dll), todos os membros implementados pelo assembly serão removidos, mas o assembly não será descarregado.

Esse cmdlet não desinstala o módulo nem o exclui do computador. Ele afeta apenas a sessão atual do PowerShell.

Exemplos

Exemplo 1: remover um módulo

Remove-Module -Name "BitsTransfer"

Esse comando remove o módulo BitsTransfer da sessão atual.

Exemplo 2: remover todos os módulos

Get-Module | Remove-Module

Este comando remove todos os módulos da sessão atual.

Exemplo 3: remover módulos usando o pipeline

"FileTransfer", "PSDiagnostics" | Remove-Module -Verbose

VERBOSE: Performing operation "Remove-Module" on Target "filetransfer (Path: 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\filetransfer\filetransfer.psd1')".
VERBOSE: Performing operation "Remove-Module" on Target "Microsoft.BackgroundIntelligentTransfer.Management (Path: 'C:\Windows\assembly\GAC_MSIL\Microsoft.BackgroundIntelligentTransfer.Management\1.0.0.0__31bf3856ad364e35\Microsoft.BackgroundIntelligentTransfe
r.Management.dll')".
VERBOSE: Performing operation "Remove-Module" on Target "psdiagnostics (Path: 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\psdiagnostics\psdiagnostics.psd1')".
VERBOSE: Removing imported function 'Start-Trace'.
VERBOSE: Removing imported function 'Stop-Trace'.
VERBOSE: Removing imported function 'Enable-WSManTrace'.
VERBOSE: Removing imported function 'Disable-WSManTrace'.
VERBOSE: Removing imported function 'Enable-PSWSManCombinedTrace'.
VERBOSE: Removing imported function 'Disable-PSWSManCombinedTrace'.
VERBOSE: Removing imported function 'Set-LogProperties'.
VERBOSE: Removing imported function 'Get-LogProperties'.
VERBOSE: Removing imported function 'Enable-PSTrace'.
VERBOSE: Removing imported function 'Disable-PSTrace'.
VERBOSE: Performing operation "Remove-Module" on Target "PSDiagnostics (Path: 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\psdiagnostics\PSDiagnostics.psm1')".

Esse comando remove os módulos BitsTransfer e PSDiagnostics da sessão atual.

O comando usa um operador de pipeline (|) para enviar os nomes de módulo para Remove-Module. Ele usa o parâmetro comum Verbose para obter informações detalhadas sobre os membros que serão removidos.

As mensagens detalhadas mostram os itens removidos. As mensagens são diferentes porque o módulo BitsTransfer inclui um assembly que implementa seus cmdlets e um módulo aninhado com seu próprio assembly. O módulo PSDiagnostics inclui um arquivo de script de módulo (.psm1) que exporta funções.

Exemplo 4: remover um módulo usando ModuleInfo

$a = Get-Module BitsTransfer
Remove-Module -ModuleInfo $a

Esse comando usa o parâmetro ModuleInfo para remover o módulo BitsTransfer.

Exemplo 5: Usando o evento OnRemove

Ao remover um módulo, há um gatilho de evento pelo módulo que permite que um módulo reaja à remoção e execute algumas tarefas de limpeza, como liberar recursos.

$OnRemoveScript = {
    # perform cleanup
    $cachedSessions | Remove-PSSession
}
$ExecutionContext.SessionState.Module.OnRemove += $OnRemoveScript

$registerEngineEventSplat = @{
    SourceIdentifier = ([System.Management.Automation.PsEngineEvent]::Exiting)
    Action = $OnRemoveScript
}
Register-EngineEvent @registerEngineEventSplat

A $OnRemoveScript variável contém o bloco de script que limpa os recursos. Registre o bloco de script atribuindo-o a $ExecutionContext.SessionState.Module.OnRemove. Você também pode usar Register-EngineEvent para que o bloco de script seja executado quando a sessão do PowerShell terminar.

Para módulos baseados em script, você adicionaria esse código ao arquivo ou o .PSM1 colocaria em um script de inicialização listado na propriedade ScriptsToProcess do manifesto do módulo.

Parâmetros

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

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

-Force

Indica que esse cmdlet remove módulos somente leitura. Por padrão, Remove-Module remove apenas módulos de leitura/gravação.

Os valores ReadOnly e ReadWrite são armazenados na propriedade AccessMode de um módulo.

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

-FullyQualifiedName

O valor pode ser um nome de módulo, uma especificação completa do módulo 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 é uma especificação de nome ou módulo, o PowerShell pesquisa o PSModulePath para o módulo especificado.

Uma especificação de módulo é uma tabela de hash que tem as chaves a seguir.

  • ModuleName - Necessário Especifica o nome do módulo.
  • GUID - Opcional Especifica o GUID do módulo.
  • Também é necessá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.
Type:ModuleSpecification[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ModuleInfo

Especifica os objetos do módulo a ser removido. Insira uma variável que contenha um objeto PSModuleInfo ou um comando que obtém um objeto de módulo, como um Get-Module comando. Você também pode redirecionar objetos de módulo para Remove-Module.

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

-Name

Especifica os nomes dos módulos a serem removidos. Caracteres curinga são permitidos. Você também pode redirecionar cadeias de caracteres de nome para Remove-Module.

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

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

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

Entradas

String

Você pode redirecionar um nome de módulo para esse cmdlet.

PSModuleInfo

Você pode redirecionar um objeto de módulo para este cmdlet.

Saídas

None

Esse cmdlet não retorna nenhuma saída.

Observações

O PowerShell inclui os seguintes aliases para Remove-Module:

  • Todas as plataformas:
    • rmo

Quando você remove um módulo, é disparado um evento que pode ser usado para executar algum código de limpeza. Para obter mais detalhes, consulte Exemplo 5.