はじめに
PowerShellでExchangeOnlineを操作する際、EntraIDアプリ経由で接続するためのアプリ設定および接続手順を紹介します。なお自己学習での構築手順のため、必要以上にアクセス許可レベルを与えている可能性があることご了承ください。
EntraIDアプリケーションの設定
アプリケーションの登録
MicrosoftEntra管理センターの「アプリの登録」で新規登録する。サポートされているアカウントの種類は、「この組織ディレクトリに含まれるアカウント」を選択、リダイレクトURIは不要です。

アクセス許可レベルの設定
作成したアプリを開き、「APIのアクセス許可」を選択します。アクセス許可を追加していきます。

アクセス許可レベルで必要となってくるのは、「Office 365 Exchange Online 」です。
所属する組織で使用するAPIを選択します。

「Office 365 Exchange Online」を検索します。

「Exchange」にある「Exchange.ManageAsApp」をチェックします。管理者の同意を与えてアクセス許可の設定はこれで完了です。

IDアプリに対してロールの設定
EntraID管理画面の検索ボックスに「ロールと管理者」を検索します。検索結果のサービスにある「Microsoft Entra のロールと管理者」を選択します。

すべてのロールから「Exchangeの管理者」をクリックします。

「割り当ての追加」をクリックします。

IDアプリ名を検索します。エンタープライズアプリケーションが検索にヒットしてきますので、先ほど作成したIDアプリを選択し追加します。これでExchangeOnline管理者ロールがIDアプリに割当てられます。

自己証明書の発行およびIDアプリへの適用
PowerShellを管理者で実行、以下のコマンドレットを入力します。
#ポリシーの変更
Set-ExecutionPolicy RemoteSigned
#自己証明書の作成、AddYearsは任意の期間を指定
$mycert = New-SelfSignedCertificate -DnsName "contoso.org" -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(1) -KeySpec KeyExchange
#自己証明書のエクスポート
$mycert | Export-Certificate -FilePath "任意の絶対パスor相対パス\任意の証明書名.cer"
作成した証明書をIDアプリに割り当てます。「証明書とシークレット」の証明書タブにある「証明書のアップロード」を行います。これでIDアプリの設定は完了です。

PowerShellの接続コマンドレット
以下のコマンドレットを入力し、接続が確認できれば対応完了です。
- CertificateThumbPrint:証明書の拇印
- AppID:該当IDアプリの概要にあるアプリケーション(クライアント)ID

#ExchangeOnlineモジュールをインストールしていない場合は、installをまず実行
Install-Module -Name ExchangeOnlineManagement
#ExchangeOnlineへ接続
Connect-ExchangeOnline -CertificateThumbPrint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -AppID "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY" -Organization "yourtenant.onmicrosoft.com"
#配布リストの一覧を取得(検証のためなんでもOK)
Get-DistributionGroup
#切断
Disconnect-ExchangeOnline -Confirm:$false
まとめ
以上で『ExchangeOnlineをEntraIDアプリで操作するための設定および接続方法』でした。証明書の期限切れと実行端末・アカウント(自己証明書を発行した端末・アカウントでしか実行できない)に注意は必要ですが、これで夜間バッチでExchangeOnlineのメンテは自動対応可能ですね。
コメント