Contents

古い (未使用の) PowerShell モジュールを削除する方法

Contents

<本文>/images/get-installedmodule-list-the-installed-third-pa.png

この記事では、Windows コンピューターにインストールされている PowerShell モジュールを安全に削除する方法について説明します。これは、古いモジュールまたは未使用のモジュールをアンインストールしたり、PowerShell の起動が遅い問題を解決したり、モジュールの競合を修正したりするために必要になる場合があります。

このコマンドを使用して、登録されたリポジトリを介してコンピューターにインストールされているサードパーティの PowerShell モジュールを一覧表示します。

Get-InstalledModule

/images/get-installedmodule-list-the-installed-third-pa.png.webp

このコマンドは、Install-Module コマンドレットを介してインストールおよび登録されたサードパーティの PowerShell モジュールを一覧表示します。私の場合、すべての PS モジュールは PSGallery リポジトリ経由でインストールされます。

インストールされているモジュールを削除するには、Uninstall-Module コマンドでその名前を指定します。たとえば:

アンインストールモジュール名 PSWindowsUpdate

コンピュータには複数のバージョンのモジュールがインストールされている場合があります。したがって、このコマンドレットはモジュールの最新バージョンを削除するか、複数のバージョンが見つかった場合は失敗します。モジュールの利用可能なバージョンは次のように表示されます。

Get-Module pswindowsupdate-ListAvailable

/images/get-module-listavailable-list-the-module-verio.png.webp

特定のモジュールバージョンをアンインストールするには

アンインストールモジュール名 PSWindowsUpdate-RequiredVersion 2.2.1.4-Verbose

特定のモジュールの最新バージョンを除くすべてのバージョンを削除します。

` $moduleName=“PSWindowsUpdate”$versions=Get-InstalledModule-Name $moduleName-AllVersions |並べ替え - オブジェクトのバージョン - 降順

$バージョン |選択-オブジェクト-スキップ 1 | ForEach-Object { アンインストールモジュール名 $moduleName-RequiredVersion $_.Version-Force } `

すべてのモジュール バージョンを削除します。

アンインストールモジュール名 PSWindowsUpdate-AllVersions

Invoke-Command コマンドレットを使用すると、リモート コンピューター上の PowerShell モジュールを削除できます。

Invoke-Command-ComputerName mun-dc01-ScriptBlock {Uninstall-Module PSWindowsUpdate-RequiredVersion 2.2.1.2-Force-Verbose}

モジュールをアンインストールすると、モジュールが使用中であることを示すエラーが表示される場合があります。


WARNING: The version '2.2.1.4' of module 'PSWindowsUpdate' is currently in use. Retry the operation after closing the applications.PackageManagement\Uninstall-Package : Module 'PSWindowsUpdate' is in currently in use or you don't have the required permissions.

/images/uninstall-module-error-module-is-currently-in-us.png.webp

このようなモジュールを削除するには、まずモジュールが読み込まれた (インポートされた) PowerShell セッションを閉じます。現在のセッションにロードされている PS モジュールを一覧表示します。

モジュールの取得

現在の PS コンソールを閉じずにモジュールをメモリからアンロードするには、次のコマンドを実行します。

モジュール名 PSWindowsUpdate の削除

/images/remove-module-unload-specific-powershell-module.png.webp

この後、もう一度モジュールを削除してみてください (場合によっては、モジュールを強制的に削除するには-Force オプションを追加する必要がありますが、これにより他のモジュールの依存関係が壊れる可能性があるので注意してください)。

アンインストールモジュール名 PSWindowsUpdate-Force

PowerShell セッションを開いたときにアンインストールするモジュールが自動的に読み込まれる場合は、PS1 プロファイル ファイルを読み込まずに PowerShell コンソールを起動することでこれを回避できます。

Powershell.exe-NoProfile-Command "Uninstall-Module ImportExcel"

コンピューターで使用可能なすべての PowerShell モジュールの完全なリスト (リポジトリを通じてインストールされたものと手動でインストールされたものを含む) は、次のように表示できます。

Get-Module-ListAvailable|名前、バージョン、パスを選択

/images/get-module-listavailable-list-all-modules-inclu.png.webp

「パス」列には、モジュール ファイルの場所が表示されます。 Windows PowerShell では、次のディレクトリにインストール (コピー) されたモジュールを使用 (インポート) できます。


C:\Users\%username%\Documents\WindowsPowerShell\ModulesC:\Program Files\WindowsPowerShell\ModulesC:\Windows\system32\WindowsPowerShell\v1.0\Modules

このパスのリストは、環境変数 $env:PSModulePath にあります。

/images/dollarenvpsmodulepath-in-windows-powershell-5-1.png.webp

PowerShell Core 7.x では、$env:PSModulePath 変数に次の追加パスが含まれます。


C:\program files\windowsapps\microsoft.powershell_7.5.2.0_x64__8wekyb3d8bbwe\ModulesC:\Program Files\PowerShell\ModulesC:\program files\powershell\7\Modules

/images/dollarenvpsmodulepath-paths-in-powershell-core-7-x.png.webp

アンインストール後、モジュール ディレクトリにファイルが残る場合があります。これらのファイルは手動で削除する必要があります。たとえば、この PS スクリプトはモジュールをアンインストールし、フォルダーが空でない場合はフォルダーの内容をクリアします。

` $Module=Get-Module ImportExcel-ListAvailable

アンインストールモジュール $Module.Name-verbose

削除項目 $Module.ModuleBase-Recurse-Force `

*️⃣ 出典リンク:

PowerShell の起動が遅い問題、PSWindowsUpdate、Invoke-Command、手動でインストールされた、