大規模な Change オンラインの管理
企業が Microsoft 365 に効果的に移行し、新しいクラウド サービスを導入した後、テナント内のユーザー、ゲスト、グループなどのオブジェクトの数は絶えず増加しています。同じことが Exchange オンラインにも当てはまります。
Microsoft 365 グループの有効期限や ID ライフサイクル管理のガイダンスに従った場合でも、その結果は同等になり、管理しているオブジェクトの数が増加し、管理者にとって課題が増えています。この記事では、PowerShell を使用して大規模に Exchange オンラインを管理する方法について説明します。
大規模なオブジェクトセットの保守
私たちが知っているように、マイクロソフトは常に開発しています 異なるポータルと管理センター 管理者がサービスの管理に毎日使用する場合。最近 マイクロソフトが発表した 一般に利用可能な Exchange の新しい管理センター。
新しいポータルのドライバーの 1 つは、パフォーマンスと一括操作を実行する機能です。REST ベースで、待機時間を最小限に抑え、エラーを減らす、その他多くの処理を行うための形を整えています。簡単に言えば、管理者としての経験を向上させることができます。
パワーシェルは力を与えることができます
Exchange の新しい管理センターが改善されたにもかかわらず、機能の面では制限が残っており、パフォーマンスを向上させる余地は残っています。改善点を確認するには、管理センターから離れて PowerShell を使用する必要があります。具体的には、Exchange オンラインをインストールして使用する オンラインパワーシェル(EXO)V2モジュールを交換する.
このモジュールは、 遺産 新しいコマンドレットと同様に。現在、9 つの新しいコマンドレットが新しい REST ベースのアーキテクチャを利用しています。ナインはそれほど多くはないかもしれませんが、毎日実行する操作に関連して考えると、十分です。
使用するコマンドのほとんどは、メールボックスや受信者の属性や統計情報 (メールボックスやメールボックス内のすべてのフォルダに関する情報など) を取得するためのものです。
新しいコマンドレットを使用すると、要求された属性の数を減らすことが可能となり、その結果、ネットワーク経由で転送されるデータが少なくなります。これを行う機能は、プロパティセットと呼ばれ、より詳細に説明されています。 ここは.
新しいコマンドレット アーキテクチャを組み合わせて、プロパティ セットの使用などの機能強化を行う場合は、パフォーマンスが向上します。ただし、プロパティ セットは自動的に定義されないので、新しいコマンドレットにスクリプトを更新するときに取得する必要がある内容を認識する必要があります。
新しいアーキテクチャを除き、PowerShell の使用によっていくつかのタスクがロック解除されます。フィルター処理に基づいて一括操作を簡単に実行でき、新しい Exchange 管理センターでも表示されないプロパティを収集することもできます。
サーバー側のフィルタリングは、ユーザーが実現するよりも重要です。
現在それを強調することが重要です。 マイクロソフトでは、クライアント側のフィルター処理を使用することをお勧めします Exchange オンライン V2 モジュールを使用して最適なパフォーマンスを実現します。ただし、これは適用されます。 唯 このモジュールに。
以下は、違いを強調する簡単な例です。
# クライアント側フィルタリング
EXO メールボックスの取得 – 結果サイズ 20000 |オブジェクト -フィルタースクリプト {$_受信者の種類の詳細 -eq 'ユーザーメールボックス’}
# サーバー側フィルタリング
を取得-EXOメールボックス – 結果サイズ 20000 -受信者の種類の詳細ユーザー メールボックス
# クライアント側フィルタリング 取得–エキソメールボックス –結果サイズ 20000 | どこ–オブジェクト –フィルタースクリプト {$_.受信者の種類の詳細 –eq 'ユーザーメールボックス’} # サーバー側フィルタリング 取得–エキソメールボックス –結果サイズ 20000 –受信者の種類の詳細 ユーザーメールボックス |
最初の例では、フィルタリングは行われます 後 クライアントがすべてのアイテムを受信しました。2 番目の例では、クラウド側でフィルター処理を行い、結果をクライアントに送信するようにサーバーに要求します。これは、各例の結果が異なる出力を提供することを意味する少なくとも 2 つの意味を持つ。
まず、"-ResultSize 20000″ パラメータを指定します。つまり、20000 個のメールボックスを受信しますが、コレクションには UserMailbox に加えて、いくつかの種類のオブジェクトが含まれている可能性があります。例えば:

第二に、これは示す別の問題 – 期待するすべてのオブジェクトを取得しない場合があります。上記の例でわかるように、UserMailbox は 13219 のみです。
ただし、サーバー側のフィルタを使用すると、正しい結果が得られます。

したがって、サーバー側のフィルタを使用して正確な結果を得られるようにする場合は、パフォーマンスに影響を与える価値があります。
最大のパフォーマンスを得るための PowerShell でグラフを使用する
PowerShell を使用してオブジェクトを変更する必要がある場合は、Exchange オンライン V2 PowerShell モジュールに限定されます。残念ながら、現在、マイクロソフト グラフには Exchange オンライン属性を変更する方法はありません。
ただし、グラフをまったく使用できないわけではありません。データをすばやく取得することを目的としているため、取得するデータをフィルタ処理するために Exchange Online V2 モジュールのオーバーヘッドを回避できます。
これを行う場合は、使用するフィルタが Microsoft Graph でサポートされていることを確認する必要があります。しかし、ほとんどのシナリオでは、できるはずです。 マイクロソフトグラフでサポートされているクエリ パラメータの完全な一覧は、マイクロソフトのドキュメントで入手できます。.
Exchange Online V2 モジュールとグラフ スクリプトの使用を組み合わせる前に、そのモジュールが価値があるかどうかを検討する必要があります。これがいつ違いをもたらすのかについての洞察を与えるために、特定のモジュールのオーバーヘッドが大きな違いを生じさせる可能性があることを考慮してください。
オンプレミス環境では、フィルターを使用して LDAP クエリを利用し、その結果を Exchange に渡すことができます。これにより、LDAP がクエリ用に最適化される際に、全体的なパフォーマンスが大幅に向上します。同じ原則がマイクロソフトグラフにも当てはまります。
以下は、Exchange モジュールを使用したクエリと、対応する Microsoft Graph を使用したクエリの例です。
# 交換コマンド
ユーザーの取得 – フィルター {部門 – 'Reta*’のような}
# マイクロソフト グラフ要求
.com $filter=スタートウィズ(部門、レタ)$filter
# 交換コマンド 取得–利用者 –フィルター {部 –という感じで 「レタ*」} # マイクロソフト グラフ要求 https:グラフ.マイクロソフト.com/v1.0/ユーザー?$filter=スタートウィズ(部門、’レタ’) |
PowerShell スクリプトをマルチスレッド化すると、パフォーマンスを向上させる別のオプションが提供されます。
この手法はより高度ですが、まだ見たことのないレベルまでパフォーマンスを向上させることができます。
マルチスレッドとは、簡単に言えば、実行中の PowerShell スクリプトから複数のスレッド (サブプロセスと考えられます) をフォークし、すべてのスレッドがクライアントとサーバー側の両方でコードを実行していることを意味します。この手法は、主にデータを収集する場合に便利です。利点は、ジョブのスケールアウトを実行し、いくつかのスレッドが順番に並んで動作するのではなく、並行して動作することです。Exchange オンライン V2 PowerShell モジュールは、アーキテクチャではこれを使用します。マルチスレッドを使用する機能を実現するには、最初のシングルスレッドの例を見てみましょう。

2 番目の例では、マルチスレッドを使用して取得時間が 44% 向上しています。

1 つの PowerShell セッションから複数の Exchange オンライン環境を管理する
新しい Exchange V2 モジュールのもう 1 つの機能は、1 つの PowerShell セッションで複数のテナントに接続できることです。これはテナントからテナントへの移行中に非常に役立ちます。ただし、この機能を使用する前に、いくつかの重要な前提条件と制限事項を考慮する必要があります。
- 各接続のプレフィックスを付ける必要があります。
- 新しいコマンドレット Get-EXO* は既にプレフィックス付けされており、最後に確立された接続でのみ使用できます
次の例では、ソースとターゲットのテナントに接続しています。新しいコマンドレットは、最後に確立された接続でのみ使用できるように、データを収集するための新しいコマンドレットを活用する必要がある、ターゲットに最初に接続します。

注: テナントからオブジェクトを区別するために、 プライマリSmtpアドレス そして ユーザー プリンシパル名.
私は次のコマンドと順序を使用しました:
# ターゲット テナントに接続
接続 – ユーザー プリンシパル名 admin@M365x345322.onmicrosoft.com – プレフィックス ターゲット
# ソーステナントに接続
接続 – ユーザー プリンシパル名 admin@M365x278799.onmicrosoft.com -前ソースを修正
# ターゲット テナントに接続 繋ぐ–オンライン –ユーザー プリンシパル名 管理者@M365x345322.マイクロソフト.com –接頭辞 ターゲット # ソーステナントに接続 繋ぐ–オンライン –ユーザー プリンシパル名 管理者@M365x278799.マイクロソフト.com –接頭辞 源 |
概要
この記事では、多数のオブジェクトを管理したり大規模に管理したりする場合に、Exchange Online 環境を管理する他の方法を検討する情報と動機を提供することを願っています。
PowerShell 管理には Exchange オンライン V2 モジュール以外の数を使用できます。スクリプトや管理タスクのパフォーマンスを向上させるためには、Microsoft Graph などの複数のツールを使用してください。これらの手法を使用すると、環境から情報や統計を取得する時間を短縮するための強固な基盤を構築し、ルーチン タスクを自動化するスクリプトを作成できます。

ディスカッション
コメント一覧
まだ、コメントがありません