On-Premisss Solutions Script

Windows Server で moduleを利用したPowerShellが動かない現象

2022年12月1日

自分
自分
閲覧ありがとうございます。ゆっくり よんでいってください

本記事に記載の内容は、
「 PowerShell - Windows Server で moduleを利用したPowerShellが動かない現象」の改善策について説明しています。

 

Windows Server で"ExchangeOnlineManagement"モジュールを実行するとエラーになることが多々あります。この事象を改善する方法を紹介させて頂きます。そもそもインストールする時にエラーが出ることもありますよね・・・。

今まで、エラーになっていてしまい 仕方なくWindows 10や Windows 11のクライアント端末にて、PowerShellを実施されていた方にお勧めの内容になりますのでご参考にしてみてくださいっ。

 

 

PowerShellにてエラーが発生したら 試してみること

改善する可能性がある、試したほうが良いことを記載していきます。

必ず改善する。ということではないですが、私の環境では本対応をすることで改善しています。

 

 

PowerShell のバージョンを確認する

PowerShellを[管理者として実行]で立ち上げて、以下コマンドを実行します。
コマンドを実行

 

 command
$PSVersionTable

$PSVersionTable

 

以下画像のように、PSVersion が、5.1.xxxになっていれば ExchangeOnlineManagement モジュールの利用は問題無いです。そのたモジュール利用時にエラーが出ている場合は、各モジュールが求める最低バージョンを確認してみてください。

 

 

NET Framework のバージョンを確認する

PowerShellを[管理者として実行] で立ち上げて、以下コマンドを実行します。

ExchangeOnlineManagement モジュールを利用するには、
[.NET Framework 4.7.1 以上]とされております。
しかし・・・Windows Server 2016だと、なぜか動かないため[.NET Framework 4.8以上]を入れることで動作します

 command
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 461308

 

上記コマンドを実行すると、4.7.1以上が入っているか確認することが可能です。
本記事の改善案を試してみて、改善されない場合は 4.8以上を入れて改善するか試すのが良いと思います。

 

 

PowerShellを利用して TLS1.2が利用できるか確認する

Microsoft 365 サービスに対して、PowerShell で接続する場合は TLS1.2 が有効化されている必要があります。

Windows Serverは規定値でTLS1.0を利用するように設定されているため、以下のコマンド①を実行しTLS1.0が 有効化されていることが分かった場合は、コマンド②を実行しTLS1.2を有効化します。

コマンド②は、開いているPowerShellウィンドウでのみ、TLS1.2を利用する設定となります。

  • コマンド①
     command
    [Net.ServicePointManager]::SecurityProtocol
    



  • コマンド②
     command
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

 

エラーメッセージ: NuGet プロバイダーが必要です と表示される

以下コマンドを実施し、NuGet プロバイダーを新規インストール/更新します。

 command
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201

 

 

上記でも改善しない場合に試したほうが良いこと

以下を試して、実行環境の固有問題か確認してみてください。
切り分けが出来た場合は、発見できた問題を解決することで実行できるようになるので
環境に依存した問題か 切り分けをして、問題解消へのハードルが高いか確認するのがよいですよ。

  • 別のネットワーク環境 (Wi-Fi など) にて接続を行う
  • 一時的にプロキシを介さないネットワークより接続を行う
  • エラーとして表示されている URL との通信を許可して接続を行う
  • 別端末にて実施し動作した場合は、ダウンロードした PowerShell モジュールをコピーしてインストールする

 

 

さいごに・・・

ここまで読んでいただきありがとうございます。

ほとんどの方が、ここまでの改善策を試して頂くことで 正常に動作するようになったかと思います。
もし記載されていることでは改善しなかったよ~。これやるといいよ~。という情報をお持ちの方いれば共有頂ければ嬉しいですっ。

私の環境だと、TLS1.2の有効化・Net Framework 4.8導入で改善しました!

 

-On-Premisss Solutions, Script