Remove-Module

Quita módulos de la sesión actual.

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

El Remove-Module cmdlet quita los miembros de un módulo, como cmdlets y funciones, de la sesión actual.

Si el módulo incluye un ensamblado (.dll), se quitan todos los miembros implementados por el ensamblado, pero el ensamblado no se descarga.

Este cmdlet no desinstala el módulo ni lo elimina del equipo. Afecta solo a la sesión actual de PowerShell.

Ejemplos

Ejemplo 1: Quitar un módulo

Remove-Module -Name "BitsTransfer"

Este comando quita el módulo BitsTransfer de la sesión actual.

Ejemplo 2: Eliminación de todos los módulos

Get-Module | Remove-Module

Este comando quita todos los módulos de la sesión actual.

Ejemplo 3: Eliminación de módulos mediante la canalización

"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')".

Este comando quita los módulos BitsTransfer y PSDiagnostics de la sesión actual.

El comando usa un operador de canalización (|) para enviar los nombres de módulo a Remove-Module. Usa el parámetro común Detallado para obtener información detallada sobre los miembros que se quitan.

Los mensajes detallados muestran los elementos que se quitan. Los mensajes son distintos porque el módulo BitsTransfer incluye un ensamblado que implementa sus cmdlets y un módulo anidado con su propio ensamblado. El módulo PSDiagnostics incluye un archivo de script de módulo (.psm1) que exporta funciones.

Ejemplo 4: Eliminación de un módulo mediante ModuleInfo

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

Este comando usa el parámetro ModuleInfo para quitar el módulo BitsTransfer.

Ejemplo 5: Uso del evento OnRemove

Al quitar un módulo, el módulo desencadena un evento que permite que un módulo reaccione a la eliminación y realice alguna tarea de limpieza, 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

La $OnRemoveScript variable contiene el bloque de script que limpia los recursos. Para registrar el bloque de script, asígnelo a $ExecutionContext.SessionState.Module.OnRemove. También puede usar Register-EngineEvent para que el bloque de script se ejecute cuando finalice la sesión de PowerShell.

En el caso de los módulos basados en scripts, agregaría este código al .PSM1 archivo o lo colocaría en un script de inicio que aparece en la propiedad ScriptsToProcess del manifiesto del módulo.

Parámetros

-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

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

-Force

Indica que este cmdlet quita los módulos de solo lectura. De forma predeterminada, Remove-Module quita solo los módulos de lectura y escritura.

Los valores ReadOnly y ReadWrite se almacenan en la propiedad AccessMode de un módulo.

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

-FullyQualifiedName

El valor puede ser un nombre de módulo, una especificación de módulo completa o una ruta de acceso a un archivo de módulo.

Cuando el valor es una ruta de acceso, la ruta de acceso puede ser completa o relativa. Se resuelve una ruta de acceso relativa con respecto al script que contiene la instrucción using.

Cuando el valor es un nombre o especificación de módulo, PowerShell busca en el módulo especificado la psModulePath .

Una especificación de módulo es una tabla hash que tiene las siguientes claves.

  • ModuleName - Obligatorio Especifica el nombre del módulo.
  • GUID - Opcional Especifica el GUID del módulo.
  • También es necesario especificar al menos una de las tres claves siguientes.
    • ModuleVersion : especifica una versión mínima aceptable del módulo.
    • MaximumVersion : especifica la versión máxima aceptable del módulo.
    • RequiredVersion : especifica una versión exacta y necesaria del módulo. Esto no se puede usar con las otras claves de versión.
Type:ModuleSpecification[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ModuleInfo

Especifica los objetos de módulo que se van a quitar. Escriba una variable que contenga un objeto PSModuleInfo o un comando que obtenga un objeto de módulo, como un Get-Module comando. También puede canalizar objetos de módulo a Remove-Module.

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

-Name

Especifica los nombres de los módulos que se van a eliminar. Se permite el uso de caracteres comodín. También puede canalizar cadenas de nombre a Remove-Module.

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

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

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

Entradas

String

Puede canalizar un nombre de módulo a este cmdlet.

PSModuleInfo

Puede canalizar un objeto de módulo a este cmdlet.

Salidas

None

Este cmdlet no devuelve ningún resultado.

Notas

PowerShell incluye los siguientes alias para Remove-Module:

  • Todas las plataformas:
    • rmo

Al quitar un módulo, se desencadena un evento que se puede usar para ejecutar código de limpieza. Para obtener más información, vea Ejemplo 5.