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 Member eines Moduls, z. B. Cmdlets und Funktionen, aus der aktuellen Sitzung.

Wenn das Modul eine Assembly (.dll) enthält, werden alle Elemente, die von der Assembly implementiert werden, entfernt, die Assembly wird jedoch nicht entladen.

Dieses Cmdlet deinstalliert das Modul nicht oder löscht es nicht vom Computer. Es wirkt sich nur auf die aktuelle PowerShell-Sitzung aus.

Beispiele

Beispiel 1: Entfernen eines Moduls

Remove-Module -Name "BitsTransfer"

Mit diesem Befehl wird das BitsTransfer-Modul aus der aktuellen Sitzung entfernt.

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

Mit diesem Befehl werden die Module BitsTransfer und PSDiagnostics aus der aktuellen Sitzung entfernt.

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

In den ausführlichen Nachrichten werden die entfernten Elemente angezeigt. 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 Parameter ModuleInfo , um das BitsTransfer-Modul zu entfernen.

Beispiel 5: Verwenden des OnRemove-Ereignisses

Beim Entfernen eines Moduls wird ein Ereignis vom Modul ausgelöst, das es einem Modul ermöglicht, auf das Entfernen zu reagieren und einige sauber up-Aufgabe auszuführen, z. B. das Freigeben von Ressourcen.

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

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

Die $OnRemoveScript Variable enthält den Skriptblock, der die Ressourcen sauber. Sie registrieren den Skriptblock, indem Sie ihn $ExecutionContext.SessionState.Module.OnRemovezuweisen. Sie können auch verwenden Register-EngineEvent , damit der Skriptblock beim Beenden der PowerShell-Sitzung ausgeführt wird.

Für skriptbasierte Module fügen Sie diesen Code der .PSM1 Datei hinzu oder fügen ihn in ein Startskript ein, das in der ScriptsToProcess-Eigenschaft des Modulmanifests aufgeführt ist.

Parameter

-Confirm

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

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required: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 Lese-/Schreibmodule entfernt.

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
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 vollqualifizierte oder relativ sein. Ein relativer Pfad wird relativ zum Skript aufgelöst, das die using-Anweisung enthält.

Wenn es sich bei dem Wert um einen Namen oder eine Modulspezifikation handelt, durchsucht PowerShell den PSModulePath nach dem angegebenen Modul.

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

  • ModuleName - Erforderlich . Gibt den Modulnamen an.
  • GUID - Optional Gibt die GUID des Moduls an.
  • Es ist auch erforderlich , mindestens eine der drei folgenden Tasten anzugeben.
    • ModuleVersion - Gibt eine mindestens akzeptable Version des Moduls an.
    • MaximumVersion - Gibt die maximal 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
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ModuleInfo

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

Type:PSModuleInfo[]
Position:0
Default value:None
Required:True
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 an die Zeichenfolgen Remove-Moduleübergeben.

Type:String[]
Position:0
Default value:None
Required:True
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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

String

Sie können einen Modulnamen an dieses Cmdlet weiterleiten.

PSModuleInfo

Sie können ein Modulobjekt an dieses Cmdlet weiterleiten.

Ausgaben

None

Dieses Cmdlet gibt keine Ausgabe zurück.

Hinweise

PowerShell enthält die folgenden Aliase für Remove-Module:

  • Alle Plattformen:
    • rmo

Wenn Sie ein Modul entfernen, wird ein Ereignis ausgelöst, das zum Ausführen von sauber up-Code verwendet werden kann. Weitere Informationen finden Sie unter Beispiel 5.