Exchange Online PowerShell モジュールの制限環境でのインストール

Exchange

Exchange Onlineの管理に欠かせないのがMicrosoftが提供する管理用PowerShellモジュールで、現在最新の安定版は「Exchange Online PowerShell V3 モジュール(以下EXO V3 モジュール)」です。

各種設定を行うために必要なコマンドレットが利用可能で、コマンドでしか設定できない項目も多く存在します。
逆にExchange管理センターで設定できる項目はEXO V3 モジュールで設定することができるため、スクリプトを作りこんで効率化や自動化を図るなどといった運用が可能となります。

さて、今回はこのEXO V3 モジュールの管理用パソコンへのインストール方法をご紹介したいのですが、企業のセキュリティポリシーにより制限がかかっており、インストールコマンドが通らないケースもあるかと思いますので、その辺りにも触れていきます(私の会社ではそうでした)。

EXO V3 モジュールのインストール

早速ですが、EXO V3 モジュールのインストールについて手順を解説していきます。

事前確認

EXO V3 モジュールをインストールする前に事前確認を行っておきましょう。
確認すべき事項は2点です。

まずはインターネット接続を確認しましょう。
当たり前ですがExchange Onlineのコマンドレットの実行はインターネット接続がなければ行えません。

続いてPowerShellの実行ポリシーの確認です。
お使いOSの種類や企業のポリシーなどにより、デフォルトで厳しめのセキュリティ設定が施されているかもしれません。

管理者実行したPowerShellで以下のコマンドを発行し、現状のPowerShell実行ポリシーを確認します。

Get-ExecutionPolicy

実行ポリシーが「Restricted」だった場合、インストール時にエラーとなります。
以下のコマンドで実行ポリシーを「RemoteSigned」に変更します。

Set-ExecutionPolicy RemoteSigned

セキュリティの設定を緩めることになりますので、その仕様を確認しておきましょう。

実行ポリシー「RemoteSigned」とは
  • Windows サーバー コンピューターの既定の実行ポリシー。
  • スクリプトを実行できます。
  • 電子メールやインスタント メッセージング プログラムを含む、インターネットからダウンロードされるスクリプトと構成ファイルで、信頼できる発行元からのデジタル署名が必要です。
  • ローカル コンピューターに書き込まれ、インターネットからダウンロードされないスクリプトではデジタル署名は必要ありません。
  • コマンドレットを使用するなどしてスクリプトのブロックが解除されている場合は、インターネットからダウンロードされ、署名されていないスクリプトを Unblock-File 実行します。
  • インターネット以外のソースから署名されていないスクリプトを実行し、悪意のある可能性のある署名済みスクリプトを実行するリスクがあります。

引用:実行ポリシーについて – PowerShell | Microsoft Learn

インターネット経由でのインストール

まずはインターネット経由でのインストールを試みます。
管理者実行したPowerShellで以下のコマンドを発行し、EXO V3 モジュールをインストールします。

Install-Module -Name ExchangeOnlineManagement

エラー等なく完了しましたか?
ここでエラーが出てインストールが失敗する場合、次項の「オフライン環境でのインストール」を試みてみましょう。
無事にインストールができた方は、以下コマンドにてモジュールの読み込みを行います。

Import-Module ExchangeOnlineManagement

モジュールの読み込みが行えたらインストールは完了です。
「接続確認」の項に進んでください。

オフライン環境でのインストール

インターネット経由でのインストールが行えない場合は別途モジュールをダウンロードし、手動でインストールを行うことが可能です。

まずはモジュールのダウンロードから。
インターネット接続が可能な適当なパソコンで最新の安定版をダウンロードしてください。

※ダウンロードページの上部に表示されるのが最新の安定版です。

[Manual Download]タブを選択し、[Download the raw nupkg file]をクリックします。

ここから先はオフライン作業が可能です。
他のパソコンでダウンロードのみ行った場合は、ダウンロードしたファイルをEXO V3 モジュールをインストールするパソコンにコピーしておきましょう。

インストール対象のパソコンのPowerShellで以下のコマンドを発行し、ダウンロードした.nupkgファイルのブロックを解除します。

Unblock-File -Path C:\xxxxx\exchangeonlinemanagement.x.x.x.nupkg

※-Pathにはダウンロードした.nupkgファイルのパスを指定します。

続いて、ブロック解除したファイル「exchangeonlinemanagement.x.x.x.nupkg」の拡張子を「zip」に変更し、解凍します。

解凍されたフォルダ内はこのような構成となっていました。

解凍されたフォルダーの名前を「exchangeonlinemanagement.x.x.x」から「ExchangeOnlineManagement」に変更します。

PowerShellで以下のコマンドを発行し、モジュールのインストール先パスを確認します。

$env:PSModulePath

私の環境では以下の出力がありました。

C:\Users\UserName\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

ここに表示されたフォルダのいずれかに、展開した「ExchangeOnlineManagement」フォルダをコピーすることでインストールは完了です。

なお、「C:\Program Files\WindowsPowerShell\Modules」にEXO V3 モジュールを配置することでそのパソコンにサインインする全ユーザーのPowerShellに反映されます。
※このフォルダへのコピーには管理者権限が必要です。

これで手動でのインストールは完了です。

参考:.nupkgファイルのブロックを外さないと…

ダウンロードした.nupkgファイルのブロックを外さずに解凍してPowerShellモジュールインストールフォルダに配置した場合、モジュール自体は読み込まれますが以下のエラーとなりExchange Onlineに接続できませんでした。

PS C:\WINDOWS\system32> Connect-ExchangeOnline
型 [Microsoft.Exchange.Management.RestApiClient.ExchangeEnvironment] が見つかりません。
発生場所 C:\Program Files\WindowsPowerShell\Modules\exchangeonlinemanagement\netFramework\ExchangeOnlineManagement.psm1
:221 文字:9
+         [Microsoft.Exchange.Management.RestApiClient.ExchangeEnvironm ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Microsoft.Excha...angeEnvironment:TypeName) []、RuntimeException
    + FullyQualifiedErrorId : TypeNotFound

接続確認

インストールが完了したら、さっそく接続確認を行ってみましょう。

以下の接続コマンドを発行します。

Connect-ExchangeOnline

認証画面に応答しましょう。
ユーザーは全体管理者もしくはExchage管理者です。

パスワードを入力。二段階認証を設定している方はそれにも応答しましょう。

接続に成功しました。
接続確認のため、自テナントに設定しているドメイン一覧でも表示してみましょう。

Get-AcceptedDomain

操作が終わりましたら明示的な切断を行っておきましょう。

Disconnect-ExchangeOnline

あわせて導入したいPowerShellモジュール

Exchangeだけでなく、SharePointやAzureADもPowerShellモジュールを使うことで効率化が図れます。同様の手順でインストールを行うことができますので、この機会に必要なモジュールを使える状態にしておきましょう。

SharePoint関連コマンドレットの使用には「SPO 管理シェル」が必要です。

AzureAD関連コマンドレットの使用には「AADモジュール」が必要です。

また、今後は各種PowerShellモジュールがMicrosoft Graph PowerShell SDKに統合される予定です。

まとめ

いかがでしたでしょうか。

セキュアな構成にすればするほど制限がかかり、エラーの原因が掴みづらいもの。
今回は最終手段となる手動インストールを中心にご紹介しました。

コメント

タイトルとURLをコピーしました