Exchange Online Powershell V2 module 更新情報とGet-EXOMailbox確認

Exchange Online Powershell V2 moduleの更新

Exchange Online Powershell V2 moduleは2019年のIgniteで発表されたもので、大量のメールボックスなどを取得する際にREST APIを利用して高速に処理できることが可能なものとなっています。
特にパイプラインで渡して処理させるとマルチスレッドで高速らしいです。上記サイトにある以下の例では100メールボックスに対するGet-EXOMailboxStatisticsで、foreachが約900秒かかっているのに対しパイプラインでは約50秒です。
powershell screen

Exchange Online Powershell V2のcmdlet

V2はVersion 1も内包していますしV1も現役です。というよりV2はデータ取得時の高速化が目的なので以下の9つのGet系Cmdletしかありません。(Connect入れると10個)
  • Get-EXOMailbox
  • Get-EXORecipient
  • Get-EXOCASMailbox
  • Get-EXOMailboxPermission
  • Get-EXORecipientPermission
  • Get-EXOMailboxStatistics
  • Get-EXOMailboxFolderStatistics
  • Get-EXOMailboxFolderPermission
  • Get-EXOMobileDeviceStatistics
今回このV2モジュールの更新情報が発表されたのでご紹介します。

更新情報

今回の更新は以下の3つ。
  • 管理権限を付与された他テナントへの接続(ゲストとかで管理者指定されたときですかね)
  • アイデンティティにname, aliasも指定できるようになった上で位置指定パラメーター化
  • エラーハンドリングその他バグフィックス(修正内容はこちら

アイデンティティが位置指定パラメーター化は地味に嬉しい、ちゃんとしたスクリプト書くときならともかく、毎日のちょっとした運用業務に毎回アイデンティティをパラメーター指定するのめんどいですからね。

ただ・・
Please note that using alias or name slows down the performance of V2 cmdlets and hence it is not recommended to use this option
とあり、V2の高速化をフルに活かしたいならIdentityパラメーター指定してアドレスかUPN渡してあげた方がいいみたいですね、まぁそりゃそっか。
現在この更新モジュールはパブリックプレビュー中で、もうじきGAだそうです。

EXO V2 moduleのGet-EXOMailboxを試す

EXO V2 moduleが世の中に出たのは少し前のことになりますが、今更ながら少しどんなものか確認してみました。
まずはモジュールを以下サイト記載の方法でダウンロード・インストールしましょう。
https://www.powershellgallery.com/packages/ExchangeOnlineManagement/
完了後、以下のcmdletをWindows Powershellで実行します。
※現在のところPowershell Core (Ver.6 – 7)では動かないのでご注意ください。
  1. Import-Module ExchangeOnlineManagement
  2. Connect-ExchangeOnline

ここでクレデンシャルを正しく入力すると以下がコンソールに表示されます。

—————————————————————————-
We have released new management cmdlets which are faster and more reliable.
|————————————————————————–|
|    Old Cmdlets                    |    New/Reliable/Faster Cmdlets      |
|————————————————————————–|
|    Get-CASMailbox                |    Get-EXOCASMailbox                |
|    Get-Mailbox                    |    Get-EXOMailbox                    |
|    Get-MailboxFolderPermission    |    Get-EXOMailboxFolderPermission    |
|    Get-MailboxFolderStatistics    |    Get-EXOMailboxFolderStatistics    |
|    Get-MailboxPermission          |    Get-EXOMailboxPermission          |
|    Get-MailboxStatistics          |    Get-EXOMailboxStatistics          |
|    Get-MobileDeviceStatistics    |    Get-EXOMobileDeviceStatistics    |
|    Get-Recipient                  |    Get-EXORecipient                  |
|    Get-RecipientPermission        |    Get-EXORecipientPermission        |
|————————————————————————–|
To get additional information, run: Get-Help Connect-ExchangeOnline
Please send your feedback and suggestions to exocmdletpreview@service.microsoft.com
—————————————————————————-

ご丁寧に新旧の対応表を出してくれてますね。

後は上記のCmdletを実行可能です。

PropertySets

Get-EXOMailbox name
と打てばnameさんのメールボックス情報が表示されますが、V1と違い返ってくる属性の数が少ないです。
実はV2では既定で対象オブジェクトの全属性が返ってこなくなりました。Get-ADUserみたいな感じかな。これは大量のデータを取得する際に不必要な属性情報を全対象分取得すると遅くなるのを避けるためですね。
他の属性情報を取得する方法は2つあります。
  1. Propertiesパラメーターに欲しい属性名を渡す
  2. PropertySetsパラメーターを使う
1個目の方法は分かりやすく無駄がないですが毎回やるの面倒過ぎですよね。
2個目の方法は新しいやり方で、属性ごとにグルーピングされたProertySetsという概念が出たのでそれを指定する方法です。
例えばGet-EXOMailboxの場合指定しなかった場合の既定値は”Minimum”で、返ってくる属性は以下の通り。
  • Alias
  • DisplayName
  • DistinguishedName
  • EmailAddresses
  • ExchangeVersion
  • ExternalDirectoryObjectId
  • Guid
  • Id
  • Name
  • OrganizationId
  • PrimarySmtpAddress
  • RecipientType
  • RecipientTypeDetails
  • UserPrincipalName
詳細はこちら: Get-EXOMailbox property sets
用途に応じてPropertySetsを選んで無駄を省きましょうということですね。PropertySetsはカンマ区切りで複数指定することもできますし、Propertiesとセットで使うこともできます。
全属性取得するには?
“All”を指定すると全属性が返ってきてくれるのですが・・
We highly discourage using the PropertySets parameter with the value All because it slows down the cmdlet and reduces reliability. Always use the PropertySets and Properties parameters to retrieve only the requires properties.
“All”は遅くなるし安定性を損なうから極力やめとけだそうです、まぁそうですね。

EXO V2 moduleのこれから

高速化が売りなので日時のバッチ処理や全社員のメールボックス情報の出力などの場面ではかなり有用そうな気がします、新規にスクリプトを書く際には是非検討したいですね。
高速化とは別に、2020年10月で廃止されるExchange Onlineに対するBasic認証の廃止もこのEXO V2 moduleで証明書を利用して解消させたいらしいので、その情報が早くほしいですね。
というのも現状日次のメールボックスに対する処理を自動化するのに、ID/PWによるBasic認証で行っているのでスクリプトの書き換えが発生しますからね。テスト期間が必要なので早ければ早いほどありがたいです。
Translate »