PowerShellコマンドレットを実行しようとした時に、「コマンドは見つかりましたが、モジュールを読み込めません」という厄介なエラーに遭遇したことはありませんか?はい、これはよくある悩みの種です。特に、ExchangeOnlineManagementなどのモジュールを使ってMicrosoft 365に接続する際によく発生します。基本的に、システムがサードパーティ製モジュールやダウンロードしたモジュールをブロックしていることが多く、原因はPowerShellの実行ポリシーやファイルの欠落/破損などです。このような問題は、新規セットアップ時でも多くの人が経験します。でも、ご心配なく。解決方法がいくつかあります。
PowerShellモジュールの読み込みエラーを修正する方法
方法1: 実行ポリシーを確認して調整する
通常、最初に試すべきことはこれです。PowerShellには、スクリプトとモジュールの実行を許可するかどうかを制御する「実行ポリシー」と呼ばれるセキュリティ機能があります。これが「Restricted」に設定されている場合、スクリプトは全く読み込まれず、エラーが発生します。そのため、次のコマンドを実行してください。
Get-ExecutionPolicy
「Restricted」と表示されている場合は、変更する必要があります。一時的に(このセッションのみ)変更するには、次のコマンドを実行します。
Set-ExecutionPolicy RemoteSigned -Scope Process
これにより、現在のPowerShellウィンドウ内でスクリプトやモジュールを実行できるようになります。これは、システムのデフォルト設定を変更せずに、スクリプトやモジュールに特定の処理を実行する権限を与えるようなものです。この変更は現在のセッションのみに適用されるため、PowerShellを終了すると再度実行が必要になる可能性があることに注意してください。または、ユーザーに対して変更を永続的に適用するには、次のコマンドを実行します。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
これはセッション全体に適用され、通常は「モジュールを読み込めません」というエラーを解決します。「Unrestricted」や「Bypass」といったより緩いポリシーを設定する場合は、PowerShellを管理者として実行していることを確認してください。その後、次のコマンドでモジュールを再度インポートしてみてください。
Import-Module ExchangeOnlineManagement
エラーなく動作すれば、準備完了です。
方法2: モジュールファイルを確認し、必要に応じて再インストールする
ファイルが見つからない、またはモジュールが破損しているというエラーが引き続き発生する場合は、ダウンロードまたはインストールに問題がある可能性があります。まず、モジュールがインストールされている場所を確認してください。
C:\Users\%username%\Documents\WindowsPowerShell\Modules— ユーザープロフィール内C:\Program Files\WindowsPowerShell\Modules— すべてのユーザーが利用できるモジュールC:\Windows\system32\WindowsPowerShell\v1.0\Modules— 組み込みのWindowsモジュール
ExchangeOnlineManagementフォルダが見つからない、または中途半端な状態になっている場合は、完全に削除してみてください。安全に行うには、すべてのPowerShellウィンドウを閉じ、関連するディレクトリに移動してフォルダを削除します(またはエクスプローラーを使用します)。削除したら、次のコマンドでモジュールを再インストールします。
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
システムがモジュールソースにアクセスできることを確認してください。インターネットの問題によりダウンロードがブロックされ、モジュールが破損しているように見える場合があります。また、稀にダウンロードしたモジュールが完全に署名されていない、または互換性がない場合があり、署名なしスクリプトエラーが発生することがあります。
方法3: 手動でダウンロードしたモジュールファイルのブロックを解除する
インターネットからモジュールやファイルを手動でダウンロードした場合、Windowsはセキュリティ上の理由からダウンロードをブロックすることがあります。その場合、署名済みファイルや「デジタル署名されていません」というエラーが表示されます。修正するには?次のコマンドを実行してブロックを解除してください。
Unblock-File.\ExchangeOnlineManagement.psm1
またはファイル名は何でも構いません。PowerShellで直接実行することも、エクスプローラーでファイルを右クリックして「プロパティ」を選択し、下部にある「ブロック解除」をクリックすることもできます。ファイルのブロックを解除してもう一度試すだけで問題が解決する場合もあります。
ええ、権限の問題でPowerShellを管理者として実行するとうまくいくこともあります。また、Windowsのセキュリティ設定は面倒で、少し調整しないとうまくいかないこともあるので、覚えておいてください。
モジュールを再びスムーズに読み込むには、ほぼこれだけです。Windows のせいで必要以上に難しくなってしまうことがあるのが少し面倒ですが、これらの手順で大抵は直ります。