Remove-Module

Supprime des modules de la session active.

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

L’applet Remove-Module de commande supprime les membres d’un module, tels que les applets de commande et les fonctions, de la session active.

Si le module inclut un assembly (.dll), tous les membres implémentés par l’assembly sont supprimés, mais l’assembly n’est pas déchargé.

Cette applet de commande ne désinstalle pas le module ni ne le supprime de l’ordinateur. Elle affecte uniquement la session PowerShell actuelle.

Exemples

Exemple 1 : Supprimer un module

Remove-Module -Name "BitsTransfer"

Cette commande supprime le module BitsTransfer de la session active.

Exemple 2 : Supprimer tous les modules

Get-Module | Remove-Module

Cette commande supprime tous les modules de la session active.

Exemple 3 : Supprimer des modules à l’aide du 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')".

Cette commande supprime les modules BitsTransfer et PSDiagnostics de la session active.

La commande utilise un opérateur de pipeline (|) pour envoyer les noms de module à Remove-Module. Il utilise le paramètre commun Verbose pour obtenir des informations détaillées sur les membres supprimés.

Les messages détaillés affichent les éléments supprimés. Les messages diffèrent car le module BitsTransfer inclut un assembly qui implémente ses applets de commande et un module imbriqué avec son propre assembly. Le module PSDiagnostics inclut un fichier de script de module (.psm1) qui exporte des fonctions.

Exemple 4 : Supprimer un module à l’aide de ModuleInfo

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

Cette commande utilise le paramètre ModuleInfo pour supprimer le module BitsTransfer.

Exemple 5 : Utilisation de l’événement OnRemove

Lors de la suppression d’un module, il existe un déclencheur d’événement par le module qui permet à un module de réagir à la suppression et d’effectuer certaines tâches de propre up, telles que la libération des ressources.

$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 contient le bloc de script qui propre les ressources. Vous inscrivez le bloc de script en l’affectant à $ExecutionContext.SessionState.Module.OnRemove. Vous pouvez également utiliser Register-EngineEvent pour que le bloc de script s’exécute lorsque la session PowerShell se termine.

Pour les modules basés sur des scripts, vous devez ajouter ce code au .PSM1 fichier ou le placer dans un script de démarrage répertorié dans la propriété ScriptsToProcess du manifeste du module.

Paramètres

-Confirm

Vous demande une confirmation avant d’exécuter l’applet de commande.

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

-Force

Indique que cette applet de commande supprime les modules en lecture seule. Par défaut, Remove-Module supprime uniquement les modules en lecture-écriture.

Les valeurs ReadOnly et ReadWrite sont stockées dans la propriété AccessMode d’un module.

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

-FullyQualifiedName

La valeur peut être un nom de module, une spécification complète du module ou un chemin d’accès à un fichier de module.

Lorsque la valeur est un chemin d’accès, le chemin d’accès peut être qualifié ou relatif complet. Un chemin relatif est résolu par rapport au script qui contient l’instruction using.

Lorsque la valeur est un nom ou une spécification de module, PowerShell recherche PSModulePath pour le module spécifié.

Une spécification de module est une table de hachage qui a les clés suivantes.

  • ModuleName - Obligatoire Spécifie le nom du module.
  • GUID - Facultatif Spécifie le GUID du module.
  • Il est également nécessaire de spécifier au moins l’une des trois clés ci-dessous.
    • ModuleVersion - Spécifie une version minimale acceptable du module.
    • MaximumVersion - Spécifie la version maximale acceptable du module.
    • RequiredVersion - Spécifie une version exacte et requise du module. Cela ne peut pas être utilisé avec les autres clés de version.
Type:ModuleSpecification[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ModuleInfo

Spécifie les objets de module à supprimer. Entrez une variable qui contient un objet PSModuleInfo ou une commande qui obtient un objet de module, tel qu’une Get-Module commande. Vous pouvez également diriger des objets de module vers Remove-Module.

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

-Name

Spécifie les noms des modules à supprimer. Les caractères génériques sont autorisés. Vous pouvez également diriger des chaînes de nom vers Remove-Module.

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

-WhatIf

Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.

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

Entrées

String

Vous pouvez diriger un nom de module vers cette applet de commande.

PSModuleInfo

Vous pouvez diriger un objet de module vers cette applet de commande.

Sorties

None

Cette applet de commande ne retourne pas de sortie.

Notes

PowerShell inclut les alias suivants pour Remove-Module:

  • Toutes les plateformes :
    • rmo

Lorsque vous supprimez un module, un événement est déclenché qui peut être utilisé pour exécuter du code propre up. Pour plus d’informations, consultez l’exemple 5.