次の方法で共有


Remove-Module

現在のセッションからモジュールを削除します。

構文

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

説明

Remove-Module コマンドレットは、コマンドレットや関数などのモジュールのメンバーを現在のセッションから削除します。

モジュールにアセンブリ (.dll) が含まれている場合、アセンブリによって実装されているすべてのメンバーは削除されますが、アセンブリはアンロードされません。

このコマンドレットは、モジュールをアンインストールしたり、コンピューターから削除したりすることはありません。 現在の PowerShell セッションにのみ影響します。

例 1: モジュールを削除する

Remove-Module -Name "BitsTransfer"

このコマンドは、現在のセッションから BitsTransfer モジュールを削除します。

例 2: すべてのモジュールを削除する

Get-Module | Remove-Module

このコマンドは、現在のセッションからすべてのモジュールを削除します。

例 3: パイプラインを使用してモジュールを削除する

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

このコマンドは、現在のセッションから BitsTransfer および PSDiagnostics モジュールを削除します。

このコマンドでは、パイプライン演算子 (|) を使用して、モジュール名を Remove-Moduleに送信します。 Verbose共通パラメーターを使用して、削除されるメンバーに関する詳細情報を取得します。

Verbose メッセージには、削除された項目が表示されます。 BitsTransfer モジュールには、コマンドレットを実装するアセンブリ、および独自のアセンブリを含む入れ子になったモジュールが含まれるため、これらのメッセージは異なります。 PSDiagnostics モジュールには、関数をエクスポートするモジュール スクリプト ファイル (.psm1) が含まれています。

例 4: ModuleInfo を使用してモジュールを削除する

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

このコマンドは、 ModuleInfo パラメーターを使用して BitsTransfer モジュールを削除します。

例 5: OnRemove イベントの使用

モジュールを削除すると、モジュールによってイベント トリガーが発生します。これにより、モジュールは削除に対応し、リソースの解放などのクリーンアップ タスクを実行できます。

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

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

$OnRemoveScript変数には、リソースをクリーンアップするスクリプト ブロックが含まれています。 スクリプト ブロックは、 $ExecutionContext.SessionState.Module.OnRemoveに割り当てることで登録します。 Register-EngineEventを使用して、PowerShell セッションの終了時にスクリプト ブロックを実行することもできます。

スクリプト ベースのモジュールの場合は、このコードを .PSM1 ファイルに追加するか、モジュール マニフェストの ScriptsToProcess プロパティに記載されているスタートアップ スクリプトに配置します。

パラメーター

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

型:SwitchParameter
Aliases:cf
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Force

このコマンドレットが読み取り専用モジュールを削除することを示します。 既定では、 Remove-Module は読み取り/書き込みモジュールのみを削除します。

ReadOnly および ReadWrite の値は、モジュールの AccessMode プロパティに格納されます。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-FullyQualifiedName

値には、モジュール名、完全なモジュール仕様、またはモジュール ファイルへのパスを指定できます。

値がパスの場合、パスは完全修飾または相対パスにすることができます。 相対パスは、using ステートメントを含むスクリプトを基準にして解決されます。

値が名前またはモジュールの指定である場合、PowerShell は指定されたモジュールの PSModulePath を検索します。

モジュール仕様は、次のキーを持つハッシュテーブルです。

  • ModuleName - 必須 モジュール名を指定します。
  • GUID - 省略可能 モジュールの GUID を指定します。
  • また、以下の 3 つのキーのうち少なくとも 1 つを指定Required です。
    • ModuleVersion - モジュールの最小許容バージョンを指定します。
    • MaximumVersion - モジュールの許容される最大バージョンを指定します。
    • RequiredVersion - モジュールの正確で必要なバージョンを指定します。 これは、他のバージョン キーでは使用できません。
型:ModuleSpecification[]
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-ModuleInfo

削除するモジュール オブジェクトを指定します。 PSModuleInfo オブジェクトを含む変数、またはモジュール オブジェクトを取得するコマンド (Get-Module コマンドなど) を入力します。 モジュール オブジェクトをパイプ処理して Remove-Moduleすることもできます。

型:PSModuleInfo[]
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Name

削除するモジュールの名前を指定します。 ワイルドカード文字を使用できます。 名前文字列をパイプして Remove-Moduleすることもできます。

型:String[]
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:True

-WhatIf

コマンドレットの実行時に発生する内容を示します。 コマンドレットは実行されません。

型:SwitchParameter
Aliases:wi
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

String

モジュール名をこのコマンドレットにパイプできます。

PSModuleInfo

モジュール オブジェクトをこのコマンドレットにパイプできます。

出力

None

このコマンドレットは、出力を返しません。

メモ

PowerShell には、 Remove-Moduleの次のエイリアスが含まれています。

  • すべてのプラットフォーム:
    • rmo

モジュールを削除すると、クリーンアップ コードの実行に使用できるイベントがトリガーされます。 詳細については、「 Example 5」を参照してください。