Remove-Module

Entfernt Module aus der aktuellen Sitzung.

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>]

Beschreibung

Das Remove-Module Cmdlet entfernt die Elemente eines Moduls, z. B. Cmdlets und Funktionen, aus der aktuellen Sitzung.

Wenn das Modul eine Assembly enthält (.dll), werden alle Elemente, die durch die Assembly implementiert werden, entfernt, aber die Assembly wird nicht geladen.

Mit diesem Cmdlet wird das Modul nicht deinstalliert oder vom Computer gelöscht. Es wirkt sich nur auf die aktuelle PowerShell-Sitzung aus.

Beispiele

Beispiel 1: Entfernen eines Moduls

Remove-Module -Name "BitsTransfer"

Dieser Befehl entfernt das BitsTransfer-Modul aus der aktuellen Sitzung.

Beispiel 2: Entfernen aller Module

Get-Module | Remove-Module

Dieser Befehl entfernt alle Module aus der aktuellen Sitzung.

Beispiel 3: Entfernen von Modulen mithilfe der 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')".

Dieser Befehl entfernt die Module BitsTransfer und PSDiagnostics aus der aktuellen Sitzung.

Der Befehl verwendet einen Pipelineoperator (|) zum Senden der Modulnamen an Remove-Module. Er verwendet den allgemeinen Verbose-Parameter, um detaillierte Informationen über die zu entfernenden Elemente abzurufen.

Die Verbose-Nachrichten zeigen die Elemente an, die entfernt werden. Die Meldungen unterscheiden sich voneinander, da das BitsTransfer-Modul eine Assembly enthält, die die Cmdlets implementiert, sowie ein geschachteltes Modul mit seiner eigenen Assembly. Das PSDiagnostics-Modul enthält eine Modulskriptdatei (.psm1), die Funktionen exportiert.

Beispiel 4: Entfernen eines Moduls mithilfe von ModuleInfo

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

Dieser Befehl verwendet den ModulInfo-Parameter , um das BitsTransfer-Modul zu entfernen.

Parameter

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

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

-Force

Gibt an, dass dieses Cmdlet schreibgeschützte Module entfernt. Standardmäßig Remove-Module werden nur Schreibzugriffsmodule entfernt.

Die Werte ReadOnly und ReadWrite sind in der AccessMode-Eigenschaft eines Moduls gespeichert.

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

-FullyQualifiedName

Der Wert kann ein Modulname, eine vollständige Modulspezifikation oder ein Pfad zu einer Moduldatei sein.

Wenn der Wert ein Pfad ist, kann der Pfad vollständig qualifiziert oder relativ sein. Ein relativer Pfad wird relativ zum Skript aufgelöst, das die using-Anweisung enthält.

Wenn der Wert eine Name- oder Modulspezifikation ist, durchsucht PowerShell den PSModulePath für das angegebene Modul.

Eine Modulspezifikation ist eine Hashtable mit den folgenden Schlüsseln.

  • ModuleName - Erforderlich Gibt den Modulnamen an.
  • GUID - Optional Gibt die GUID des Moduls an.
  • Es ist auch erforderlich , mindestens einen der drei folgenden Tasten anzugeben.
    • ModuleVersion - Gibt eine minimale zulässige Version des Moduls an.
    • MaximumVersion - Gibt die maximale zulässige Version des Moduls an.
    • RequiredVersion - Gibt eine genaue, erforderliche Version des Moduls an. Dies kann nicht mit den anderen Versionsschlüsseln verwendet werden.
Type:ModuleSpecification[]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-ModuleInfo

Gibt die zu entfernenden Modulobjekte an. Geben Sie eine Variable ein, die ein Modulobjekt (PSModuleInfo) oder einen Befehl enthält, der ein Modulobjekt abruft, z. B. einen Get-Module Befehl. Sie können auch Rohrmodulobjekte an Remove-Module.

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

-Name

Gibt die Namen der zu entfernenden Module an. Platzhalterzeichen sind zulässig. Sie können auch Zeichenfolgen mit Rohrnamen an Remove-Module.

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

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

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

Eingaben

System.String, System.Management.Automation.PSModuleInfo

Sie können Modulnamen und Modulobjekte an pipen.Remove-Module

Ausgaben

None

Dieses Cmdlet generiert keine Ausgabe.

Hinweise

Beim Entfernen eines Moduls gibt es ein Ereignis im Modul, das ausgeführt wird. Dieses Ereignis ermöglicht es einem Modul, auf die Entfernte zu reagieren und einige Bereinigungen durchzuführen, z. B. das Freiräumen von Ressourcen. Beispiel:

$OnRemoveScript = {

# Bereinigung durchführen

$cachedSessions | Remove-PSSession

}

$ExecutionContext.SessionState.Module.OnRemove += $OnRemoveScript

Für vollständige Konsistenz kann es auch nützlich sein, auf das Schließen des PowerShell-Prozesses zu reagieren:

Register-EngineEvent -SourceIdentifier ([System.Management.Automation.PsEngineEvent]::Exiting) -Aktion $OnRemoveScript