Partager via


Exchange Calculator に使用するユーザー メッセージ プロファイルの生成

(この記事は 2015 年 4 月 27 日に Office Blogs に投稿された記事 Generating user message profiles for use with the Exchange Calculators の翻訳です。最新情報については、翻訳元の記事をご参照ください。)

 

Exchange コミュニティの皆様、こんにちは。

マイクロソフトのプレミア フィールド エンジニアとして Microsoft Exchange を専門に手掛けている Dan Sheehan です。長年 Exchange エンジニアとして働いてきた私は、数々の PowerShell スクリプトを作成してきました。

今回の記事では、Exchange 管理者およびサービス担当者を支援する、Exchange の「ユーザー メッセージ プロファイル」を生成するスクリプトを紹介します。「ユーザー メッセージ プロファイル」は、Exchange Server Role Requirements Calculator (英語) および Exchange Client Network Bandwidth Calculator (英語) に入力する重要な情報です (詳細については後述します)。

このスクリプト (TechNet ギャラリー (英語) で公開) は、あらゆる規模の環境で動作するように設計されており、Exchange サイトを含む数百余りの環境でテストされています。現在のバージョンは Exchange 2010 および 2013 の管理シェルで動作します (Exchange 2007 向けのバージョンは現在開発中です)。私は、マイクロソフトに入社前する前から多くのスクリプトを TechNet ギャラリーで公開してきました。私のスクリプトも含め TechNet ギャラリー全体をぜひチェックしてみてください。

では前置きはここまでとして、スクリプトの説明に入りましょう。

背景

Exchange の「ユーザー メッセージ プロファイル」とは、ユーザーが 1 日に送受信するメッセージの量と、メッセージの平均サイズのことです。この情報は非常に重要であり、Role Requirements Calculator では、あるユーザー集団が Exchange システムに与える一般的な負荷を判断するために使用され、その負荷に基づいて新しい Exchange 環境の規模が適切になるよう設計します。ユーザー メッセージ プロファイルの情報は Client Bandwidth Calculator でも使われます。Client Bandwidth Calculator は、クライアントの種類および使用されているバージョンごとに、電子メール ユーザーがネットワーク上で使用する可能性のある帯域幅を予測します。

Exchange サービス担当者の中には、予想される作業負荷から 2、3 種類のユーザー メッセージ プロファイルを推測して見積もる人もいれば、既存環境のデータを使用して、ユーザーの最近のアクティビティからメッセージング プロファイルの作成を試みる人もいます。しかし、ユーザーの最近のアクティビティから必要な情報を収集してユーザー メッセージ プロファイルを作成するのは簡単な作業ではありません。このため、多くのサービス担当者はサード パーティ製ツールに目を向けます。

今回の PowerShell スクリプトは、現在の環境に基づいてユーザー メッセージ プロファイル平均値を生成したいけれども、必要な情報を収集してメッセージ プロファイルを生成するサード パーティ製ツールが手元にない、またはサード パーティ製ツールを使いたくないという Exchange サービス担当者を支援するために作られました。

インターネットには他にもいくつかのメッセージ統計収集スクリプトが公開されています。たとえば、TechNet ギャラリーで Mjolinor が公開しているこちら (英語)、Neil Johnson (Client Bandwidth Calculator の責任者) によるこちら (英語) などがあります。このようなメッセージ統計スクリプトは、一般的にすべてのメッセージング アクティビティに関するレポートをユーザーごとに作成するので時間がかかり、ユーザー メッセージ プロファイルの作成に必要ではない情報も含んでいます。また、出力からユーザー メッセージ プロファイル平均値を得るためには加工が必要になります。これに対し、今回紹介するスクリプトは、ユーザーが送受信したメッセージのみに着目します。これは、メッセージング アクティビティ全般を収集するよりも高速です。また、ユーザー個人ごとの結果ではなく、Exchange (AD) サイトごとのユーザー メッセージ プロファイルを提供します。

機能

スクリプトは、ネイティブの Exchange PowerShell コマンドレットを使用して、指定された日付の範囲を対象に、メールボックスの役割を担うサーバーからメールボックスの数を抽出し、ハブ トランスポートの役割を担うサーバーのメッセージ追跡ログからメッセージング アクティビティを抽出します。抽出した情報を処理して、ユーザーおよびメールボックスのメッセージ プロファイル (送信メッセージ数、受信メッセージ数、およびメッセージ サイズの平均値) を取得します。

スクリプトには開始日と終了日が必須です。スクリプトは、複数回実行して複数の日付または期間を最終的な出力に累積することもできます。たとえば、Exchange サーバーから 30 日間連続のデータを収集すると、週末が含まれるためにユーザーによる負荷が少なく、平均値が不適切に小さくなることがあります。このスクリプトでは、30 日間の中で平日のみを 4 つの連続した期間として指定し、スクリプトの実行を 4 回繰り返して、標準的な営業日を反映した平均値を得られます。CSV ファイルへの出力は 4 回目の最終週に実行できます。

スクリプトは、特定の AD サイト、複数の AD サイト、またはすべての AD サイトの Exchange サーバーを対象として実行できます。生成されたメッセージ プロファイルは AD サイトごとに編成されて戻されます。複数の AD サイトを指定できる機能は、複数のサイトからなる Exchange を国際的に展開する場合に重要です。なぜなら、世界のあらゆる場所で月曜日から金曜日が営業日であるとは限らないからです。一部のサイトに異なる日付範囲を使用して収集を行う必要がある場合は、AD サイトを指定する機能と、複数回実行して得たデータを 1 つのレポートに累積して集計する機能とを組み合わせて使用することで対応できます。

スクリプトでは、オプションとして、収集されたすべてのサイトのユーザーを集計して「合計」ユーザー メッセージ プロファイルを得ることもできます。これは、出力の上部に「~All Sites」というサイト名で表示されます。収集されたデータはスクリプトをそれぞれ実行するたびに CSV ファイルにエクスポートできます。エクスポートしない場合は、PowerShell 変数として自動的に保管されるので、後で加工することもできます。

スクリプトは画面にも詳しく出力を表示します。たとえば、階層化された進行状況バーで、現在処理されているサイト、そのサイト内で現在処理されているサーバー、現在処理されているアクティビティを表示します。スクリプトの出力の最後には実行時間の概要も表示されるので、これを参考に、今後のデータ収集に必要な時間を計画することもできます。

結果データ

さまざまなスクリプト パラメーター (後述) を使用して、スクリプトによるデータ収集およびその後の出力から、特定の種類のメッセージ ボックスやメッセージを除外できます。たとえば、データ収集からすべての会議室メールボックスを除外すれば、スクリプトの出力に反映されなくなります。つまり、以下の説明の「すべて」や「合計」という語は、スクリプトの収集や処理で対象となっているメッセージおよびメールボックスを指しています。サーバー上で使用可能なデータすべてを指しているわけではありません。

出力データは、Exchange サイト (およびオプションの「~All Sites」項目) ごとに以下の列に集計されます。

  1. Site Name: Exchange サーバーが実行されている AD サイトの名前 ([AD Sites and Services] で定義されている名前)
  2. Mailboxes: サイトで検出されたすべてのメールボックスの数。この情報は Client Network Bandwidth Calculator と Role Requirements Calculator の双方で使用されます。
  3. AvgTotalMsgs: サイト内のメールボックスで送受信されたメッセージの数。この情報は Role Requirements Calculator で使用されます。
  4. AvgTotalKB: サイトで送受信されたメッセージすべての平均サイズ (KB 単位)。この情報は Client Network Bandwidth Calculator と Role Requirements Calculator の双方で使用されます。
  5. AvgSentMsgs: サイト内の各メールボックスで送信されたメッセージの数の平均値。この情報は Client Network Bandwidth Calculator で使用されます。
  6. AvgRcvdMsgs: サイト内の各メールボックスで受信されたメッセージの数の平均値。この情報は Client Network Bandwidth Calculator で使用されます。
  7. AvgSentKB: サイト内の各メールボックスで送信されたメッセージの平均サイズ (KB 単位)
  8. AvgRcvdKB: サイト内の各メールボックスで受信されたメッセージの平均サイズ (KB 単位)
  9. SentMsgs: サイト内のメールボックスで送信されたメッセージの合計数
  10. RcvdMsgs: サイト内のメールボックスで受信されたメッセージの合計数
  11. SentKB: サイト内のメールボックスで送信されたすべてのメッセージの合計サイズ (KB 単位)
  12. RcvdKB: サイト内のメールボックスで受信されたすべてのメッセージの合計サイズ (KB 単位)
  13. UTCOffset: UTC タイム ゾーンに対する、AD サイトのオフセット。この情報は Client Network Bandwidth Calculator で使用されます。
  14. TimeSpan: スクリプトが実行されているローカル コンピューターの時計と、処理対象のリモート サーバーの時計の時間差。参考用です。
  15. TotalDays: サイトで収集が行われた日数。この情報は、スクリプトで複数の実行を 1 つの出力にまとめるときに必要です。

パラメーター

スクリプトには、ユーザー メッセージ プロファイル生成処理に何を含め、何を含めないかを管理者が制御できるように、多くのパラメーターが用意されています。ほとんどのパラメーターは 3 つの「パラメーター セット」のいずれかに分類されます。ただし、2 つのセットに属するパラメーターが 1 つと、いずれのセットにも属さないパラメーターが 2 つ存在します。

パラメーター セットは関連のあるパラメーターをグループごとにまとめています。このため、1 つのパラメーターを指定すると、そのパラメーター セットを選んだことになり、一緒に使用できるパラメーターは同一セット内のパラメーターか、いずれのセットにも属さないパラメーターに限られます。さらに、必須のパラメーターはそのパラメーター セットの中でのみ必須となります。つまり、あるパラメーター セットを使用している場合、他のセットで必須のパラメーターは適用されません。

パラメーター セットの考え方が少し複雑だと感じる場合、Exchange 2013 を使用しているのであれば、PowerShell 3 (およびこれ以降) の Show-Command コマンドレットを使用できます。以下のコマンドレットはパラメーター セットを視覚的に表示します。

Show-Command .\Generate-MessageProfile.ps1

以下のようなポップアップ ウィンドウが表示されます。

スクリプトは、以下のパラメーターに加えて、従来の -Verbose および -Debug スイッチもサポートします。

パラメーター

セット

必須

説明

ADSites

Gather

任意

* 」に設定すると、Exchange が存在するすべての AD サイトを処理します。いくつかの AD サイトのみを対象として指定するには、明示的にサイト名を指定する、またはワイルドカードを使用してサイト名を指定します。両方の方法の併用も可能です。サイトが定義されない場合はローカルの AD サイトが使用されます。複数のサイトを指定する場合は、各サイト名を引用符で囲み、スペースを空けずにコンマで区切ります。たとえば、「"Site1","Site2","AltSite*",…」のように入力します。

StartDate

Gather

必須

メッセージ追跡ログの検索を開始する日付を指定します。指定された日付の 00:00 (深夜) に開始されます。形式は MM/DD/YYYY です。

EndDate

Gather

必須

メッセージ追跡ログの検索を終了する日付を指定します。指定された日付の 00:00 (深夜) に終了します。つまり、月曜日から金曜日までを検索する場合は、終了日に土曜日を指定します。そうすると検索は土曜日の 00:00 (深夜) に終了します。形式は MM/DD/YYYY です。

ExcludePFData

Gather

任意

Exchange 2010 のパブリック フォルダー データベースに対して送受信されたメッセージを除外しようとします。

メモ: このパラメーターは推奨されません。フィルタリングがメッセージの件名に依存して実行されるため、ユーザー メッセージも除外される可能性があります。また、このパラメーターはすべてのパブリック フォルダー メッセージを除外するわけではありません。一部のパブリック フォルダー メッセージの件名は、ユーザーが自身のメールに同じ件名を使用する可能性が高いことから、除外の対象に含まれていません。

ExcludeHealthData

Gather

任意

「extest_」メールボックスおよび Exchange 2013 「HealthMailbox」メールボックスに送信されたメッセージを除外します。

メモ: extest および HealthMailbox のメールボックスは大量のトラフィックを生成する場合があるので、ユーザーのアクティビティをより正確に反映したメッセージ プロファイルを得るには、このスイッチを使用することが推奨されます。

ExcludeRoomMailboxes

Gather

任意

会議室メールボックスに送信されたメッセージを除外します。既定では、備品用メールボックスおよび探索メールボックスは、ユーザー メッセージ プロファイル平均値をゆがめる要因となるので除外されます。会議室メールボックスは、電子メールを送受信する可能性があるので、既定では除外されません。

メモ: 対象の環境内で会議室予約が頻繁に行われる場合は、会議室メールボックスに対するメッセージが頻繁に送受信されるため、このパラメーターの使用は推奨されません。

BypassRPCCheck

Gather

任意

Get-WMIObject を使用してリモート コンピューターへの RPC 接続をテストする処理をスキップするよう、スクリプトに指示します。RPC チェックのスキップは、スクリプトを実行しているアカウントがリモート コンピューターの WMI に接続する適切な権限を持っている場合には必要ありません。

ExcludeSites

Gather

Import

任意

データ処理から除外するサイトを指定します。ワイルドカードを使用して複数のサイトからデータを収集するとき、その指定に含まれるサイトのうち一部を除外したい場合に便利です。データのインポートでは、以前データ収集したときから一部のサイトを除外したい場合に便利です。複数のサイトを指定する場合は、各サイト名を引用符で囲み、スペースを空けずにコンマで区切ります。たとえば、以下のようにします。

"Site1","Site2",...

メモ: ワイルドカードはサポートされません。

InCSVFile

Import

必須

以前に収集したデータのインポート元となる CSV ファイルのパスと名前を指定します。

InMemory

Existing

必須

スクリプトに、既存のインメモリ データのみを使用するように指示します。AverageAllSites パラメーター スイッチとの併用のみを想定しています。

AverageAllSites

<なし>

任意

収集されたサイトすべてのメッセージ プロファイル平均値を表す「~All Sites」をコレクション内に作成するようスクリプトに指示します。「~All Sites」が既に存在する場合は、更新されたデータで上書きされます。

OutCSVFile

<なし>

任意

収集したデータのエクスポート先となる CSV ファイルのパスと名前を指定します。このパラメーターを省略すると、収集されたデータはシェル変数 $MessageProfile に保存されます。 メモ: 複数の週のデータを別々に収集している場合 (週末を避けて平日のみの複数の期間を収集している場合など) は、最後の週までこのパラメーターを使用しないでください。最後の週でのみ使用することで、完成したデータを CSV ファイルにエクスポートできます。

メモ: このパラメーター一覧は、スクリプトの更新に応じて TechNet ギャラリーへの投稿で更新する予定です。

使用例

以下に、スクリプトの使用例をいくつか説明します。

1. すべてのサイトの Exchange サーバーを、2014 年 12 月 1 日 (月) の初めから 2014 年 12 月 5 日 (金) の終わりまで処理します。データは、Exchange 2013 HealthMailbox メールボックスと extest_ メールボックスのメッセージ データを除外して、AllSites.CSV ファイルにエクスポートします。

Generate-MailboxProfile.ps1 -ADSites * -StartDate 12/1/2014 -EndDate 12/6/2014 -OutCSVFile AllSites.CSV -ExcludeHealthData

2. 名前が「East」で始まる AD サイトの Exchange サーバーを、2014 年 12 月 1 日 (月) の初めから 2014 年 12 月 1 日 (月) の終わりまで処理します。スクリプトの実行中、追加の Verbose 情報と Debug 情報を画面に出力します。収集されたデータは、スクリプトが完了した後、$MessageProfile 変数で使用可能になります。

Generate-MailboxProfile.ps1 -ADSites East* -StartDate 12/1/2014 -EndDate 12/2/2014 –Verbose -Debug

3. 「EastDC1」という名前の AD サイトと、名前が「West」で始まる AD サイトの Exchange サーバーを、2014 年 12 月 1 日 (月) の初めから 2014 年 12 月 30 日 (火) の終わりまで処理します。データは、パブリック フォルダーのトラフィックの大部分を除外して、MultiSites.CSV ファイルにエクスポートします。

Generate-MailboxProfile.ps1 -ADSites “EastDC1”,”West*” -StartDate 12/1/2014 -EndDate 12/31/2014 -OutCSVFile MultiSites.CSV –ExcludePFData

4. 現在の作業ディレクトリにある PreviousCollection CSV ファイルのデータを、この後使用できるように、インメモリのデータ コレクション $MessageProfile にインポートします。

Generate-MessageProfile.ps1 -InCSVFile .\PreviousCollection.CSV

5. 事前に収集されて $MessageProfile 変数に格納されているデータを処理し、すべてのサイトの平均値をサイト名「~All Sites」としてデータ コレクションに追加します。

Generate-MessageProfile.ps1 -InMemory -AverageAllSites

FAQ

1. このスクリプトで生成される出力は、ユーザーのメッセージ プロファイルを正確に表し、Role Requirements Calculator など他のツールで使用できますか。

  • このスクリプトは特定の時点でのユーザーのメッセージング アクティビティを反映したデータを生成します。データの有効性は、スクリプトの処理対象として指定した期間と、除外するかまたは含めるように指定したデータの範囲、アクセス可能なサーバーに格納されている情報に基づいています。たとえば、休日を含む期間や多くのユーザーが休暇を取る期間を対象にこのスクリプトを実行した場合、メッセージ プロファイル平均値が一般的な営業期間より低く示される可能性があります。
  • このスクリプトが反映するのは選択した期間中にユーザーが行ったメッセージング アクティビティのみであることを考慮し、他のツール用には、このユーザー メッセージ プロファイルの出力をあくまでガイドラインとして使用してください。

2. Exchange システムの設計にある程度の余裕を持たせるために、このスクリプトで生成されたメッセージ プロファイルの数値を大きくするべきですか。

  • 何年も稼働させる必要がある電子メール システムを設計する場合、将来的なシステム拡張と、徐々にメッセージ プロファイルが増大する可能性を考慮して数値を少し大きくするというのは適切なアプローチです。数値をどれくらい大きくするかは、ご自身で判断してください。

3. 対象ユーザーのメッセージ プロファイルが、想定よりも小さな値になっているように思えます。このような結果となる要因は何ですか。スクリプトで生成される値はどうすれば大きくなりますか。

  • スクリプトを実行するときに選択したデータの範囲に、ユーザーのアクティビティが少なくなると思われる期間がなかったか確認してください。
  • 指定した日付範囲が、週末や非営業日を含んでいる場合は、そのような日を除外してスクリプトを再実行します。平均値に複数の週の平日を含める場合には、累積的に複数回実行しなければならない場合があります。
  • ほとんど使用されない会議室がたくさんある環境で、それを除外していなかった場合は、ExcludeRoomMailboxes パラメーターを使用してスクリプトを再実行し、平均値が上昇していないか確認してください。反対に、スクリプトのいずれかのパラメーターを使ってデータを除外している場合は、除外を指定せずに再実行すると平均値が上昇する場合があります。適切な結果が得られるまで、実際の環境でパラメーターをいろいろと組み合わせて試してください。
  • 最近サイト内でハブ トランスポートの役割を担うサーバーを廃止した場合は、そのサーバーに保管されていたユーザー アクティビティの詳細を提供するメッセージ追跡ログも削除されています。このため、このスクリプトは、指定した期間中にハブ トランスポートの役割を担うサーバーが廃止されていないサイトでのみ実行することを強くお勧めします。スクリプトは、指定の期間中にハブ トランスポートの役割を担うサーバーがサイトに追加されたことを検出すると警告を表示するように組み込まれており、別のハブ トランスポート役のサーバーが最近サイトから削除された場合には、ユーザー メッセージ プロファイルに影響を及ぼす可能性があることを伝えます。

4. ユーザー単位の情報が表示されないのはなぜですか。なぜサイト単位なのですか。

  • このスクリプトは、Role Requirements Calculator と Client Network Bandwidth Calculator のどちらでも使いやすいサイト単位のメッセージ プロファイル情報を収集することで、最大限の高速化を図っています。Client Network Bandwidth Calculator は、サイト単位のメッセージ プロファイル情報を必要とし、サイト単位の情報は Role Requirements Calculator でも機能します。なお、ユーザー単位の情報をレポートする機能は、このスクリプトの今後のバージョンに入れることを検討中です。
  • ユーザー単位の情報は Role Requirements Calculator も Client Network Bandwidth Calculator も必要としません。オプションで、異なるユーザー プロファイルをそれぞれの Calculator に入力し、同じメッセージ プロファイルを使用して、サイズが大きいメールボックスや、一部のユーザーがモバイル デバイスを使用する場合などに予想される IOPS の増大といった相違点を反映できます。
  • ユーザー単位の情報が必要な場合は、「背景」セクションで紹介したスクリプトのいずれかを使用してください。

5. 1 つまたは複数のサイトがスキップされた、または除外されたという警告が表示されました。これはなぜですか。

  • サイトは、そのサイト内のいずれかのサーバーへの接続に問題があるとスキップされます。サイトのメッセージ プロファイルはそのサイトのすべてのサーバーの情報を含む必要があるので、1 つのサーバーの情報でも欠落すると、その結果は不完全な情報となります。このため、1 つのサーバーでも接続に問題があると、スクリプトは部分的なデータをレポートするのではなく、そのサイトをスキップします。
  • サイトは、メールボックスまたはメッセージング アクティビティが検出されなかった場合には除外されます。たとえば、アクティブなメールボックス データベースがないパッシブな Exchange DR サイトなどは、正常な処理において除外されます。このようなサイトにアクティブなハブ トランスポート サーバーが存在する場合でも、そのサーバーは、対象のメールボックスが存在するサイトのハブ トランスポート役サーバーにメッセージを渡すので、メッセージ追跡データは不要です。メッセージ プロファイルの生成には、最後に使われたハブ トランスポート役サーバーのログが使用されます。
  • データ収集の問題でサイトがスキップされた場合、そのサイトは、スクリプトの終了後に使用可能になる $SkippedSites 変数に記録されます。$SkippedSites を ADSites パラメーターの値として指定してスクリプトを再実行すれば、スキップされたサイトのみを対象にデータを収集できます。これは、サーバーの接続の問題が一時的な WAN 接続の問題に起因するもので、スクリプトを再実行すればスキップされたサイトを正常に処理できるという場合に便利です。

6. なぜ、検索対象の日付に加えて、時間帯を指定することができないのですか。

  • このスクリプトは、1 日のうちの一部の時間帯ではなく、全日のデータを処理して平均値を求めるように設計されています。特定の時間帯を指定すると、1 日のうちの一部のみを反映する結果となるので、「日単位」のユーザー メッセージ プロファイル平均値を求めるためのデータとしては適切ではありません。

7. EndDate は、なぜレポートを停止する翌日を設定する必要があるのですか。

  • DateTime 型の変数に日にちだけが指定されると、PowerShell はその時刻の部分に 00:00 を割り当てます。StartDate の場合、00:00 は 1 日が始まる時刻なので、これを指定することに問題はありません。一方 EndDate の場合は、指定された日が始まる 00:00 にデータ収集が終了します。このため、EndDate には、出力に含める最後の日の翌日を指定しまければなりません。
  • スクリプトには、開始日が将来の日付でないこと、終了日が開始日よりも前でないこと、開始日が少なくとも現在の日付よりも前の日付であること、終了日が現在の日付よりも後でないことを確認するロジックが組み込まれています。

8. スクリプトで、データを CSV ファイルに保存し、後でインポートするのはどのような場合ですか。

  • 一部のサイトには WAN 経由で到達できないことがあります。そのような場合、リモート サイトのサーバーでローカルにデータを収集し、CSV ファイルとしてメインのサイトにデータを転送して戻すことにより、メインのデータ コレクションにインポートできます。
  • この機能は、数週間や数か月にわたる期間内の複数の時点からデータを収集し、そのデータをインポートして、全期間にわたる 1 つのユーザー メッセージ プロファイルとして生成するときにも役立ちます。
  • さらに、この機能はインメモリのデータから一部のサイトを除去するためにも使用できます。データを CSV ファイルにエクスポートしてから、新しいデータ コレクションに再度インポートしますが、このときに ExcludeSites パラメーターを使用して不要なサイトのインポートをしないように指定します。

9. InMemory パラメーターの目的は何ですか。

  • このスイッチは唯一、1 回以上の収集処理またはインポート処理によってデータが既にメモリに読み込まれている場合に、AverageAllSites パラメーターを使用して、「~All Sites」というサイト名で全体に対する 1 つのユーザー メッセージ プロファイルを提供するためにのみ使用されます。基本的にはこのパラメーターは、データの収集やインポートを省略して、既に「インメモリ」にあるデータを使用できるようにするものです。

10. AverageAllSites を使用すると、日数の不一致を示すエラーが表示されます。これはなぜですか。

  • 全体に対して 1 つのユーザー メッセージ プロファイルを生成する処理では、収集されたすべてのサイトにおいて TotalDays の値が同じである必要があります。TotalDays の値が「1 日あたり」の平均の計算に使われるので、これが同一でないとデータは正しく集計されません。この場合、サイトのデータを再確認する必要があります。データを CSV ファイルにエクスポートし、異なる TotalDays が記録されているサイトがないか見て確認して、もしあれば適切に対処します。

11. –OutToCSV パラメーターを使用しない場合、情報が $MessageProfile 変数に保存されるのはなぜですか。また、最初からやり直すためにメモリのデータを消去するにはどうすればよいですか。

  • スクリプトを複数回実行してデータを累積する場合、データを PowerShell 変数に保存することが必要です。スクリプトはこの変数を使用して、複数回の実行で得られる累積データを保管します。
  • また、インメモリの $MessageProfile 変数のデータを他の PowerShell スクリプトやコマンドに渡すこともできます。
  • 収集されたデータを後から CSV ファイルに保管したくなった場合は、「$MessageProfile | Export-Csv …」というコマンドを使って独自の CSV ファイルを作成することもできます。
  • $MessageProfile のデータをメモリから消去するには、以下のコマンドを使用します。

     $MessageProfile = $Null

12. スクリプトの出力に、「TimeSpan」という値と、リモート サイトのタイム ゾーンが含まれるのはなぜですか。

  • TimeSpan は、スクリプトを実行しているサーバーと、接続先のリモート サーバーとの時間差を正の値または負の値で表します。既定では、Get-MessageTrackingLog コマンドをリモート サーバーに対して実行する場合、リモート サーバーに渡される開始日および終了日の DateTime 型の値は常に、コマンドレットを実行しているサーバーでの時間です。つまり、コマンドレットを実行しているコンピューターがリモート サーバーよりも 5 時間遅れている場合、コマンドレットによってリモート サーバーに渡される日付 (時刻を含む) は想定している日付よりも 5 時間遅いことになります。
  • スクリプトは、DateTime 型の値を Get-MessageTrackingLog コマンドレットに渡すときに、TimeSpan 値を使用して適切に調整します。これにより、リモート サーバーは DateTime 型の値を必ず本来想定された日付 (時刻の部分は 00:00) で処理できます。上記の例では、コマンドレットがリモート サーバーに対して実行されるときに、スクリプトが日付に 5 時間を加算します。この値はスクリプトを正確に実行するために不可欠なので、管理できるように出力に記録されています。
  • Client Network Bandwidth Calculator は、指定されるユーザー メッセージ プロファイルのタイム ゾーンを必要とします。このツールを使いやすくするために、スクリプトの出力にサイトのタイム ゾーン情報を記録しています。

13. ExcludePFData パラメーターは、パブリック フォルダーのすべてのトラフィックを除外するわけではないようですが、どのような目的で組み込まれているのか教えてください。

  • スクリプトの最初のテストで、専用のパブリック フォルダー サーバーが、パブリック フォルダーのレプリケーションのために大量のハブ トランスポート メッセージング アクティビティを生成していることがわかりました。
  • できる限り正確なユーザー メッセージ プロファイルを求めるうえで、スイッチを追加してパブリック フォルダー レプリケーションのデータの一部を除外しようと試みました。パブリック フォルダーのトラフィックを一貫して確実に識別する方法は、メッセージの件名に対するキーワード マッチングしかありません。このため、パブリック フォルダー レプリケーションの件名に使われる語句が含まれるメッセージを除外するフィルターを作成しましたが、誤って実際のユーザー メッセージを除外する可能性を抑えるために、ユーザーが使用する可能性の低い語句だけを除外の対象とするようにしました。

14. 備品用メールボックスと探索メールボックスは除外されていますが、調停メールボックスはなぜ除外されないのですか。

  • 備品用メールボックスおよび探索メールボックスはハブ トランスポート サービスを介して電子メールを送受信しません。このため、これらのメールボックスを含めるとユーザー メッセージ プロファイルに不適切な影響を及ぼします。
  • 一方、調停メールボックスは一般的に数が限られているので、メールボックス数にこのメールボックスを含めてもメッセージ プロファイルに不適切な影響が大きく及ぶとは考えられません。また、組織がモデレート配布グループなどの機能を使用しているかによって、調停メールボックスにメッセージが送受信されることがあります。このため、このメールボックスを含める方が適切なメッセージ プロファイルを得られる場合もあります。

まとめ

説明は以上です。この PowerShell スクリプトはお使いの環境でユーザー メッセージ プロファイル平均値の生成を支援します。多数のオプションが用意されているので、ご要望に合わせて調整することもできます。このスクリプトは Client Network Bandwidth Calculator と Role Requirements Calculator で使いやすいように作られていますが、既存環境のトラブルシューティングにも役立つと思います。

Exchange 2007 向けのバージョンが完成したら、TechNet ギャラリーのこちらのページ (英語) に加える予定です。このバージョンが必要な方はぜひ定期的にチェックしてください。スクリプトの強化または変更を行った場合も同じく TechNet ギャラリーのページを更新する予定ですので、こちらもご期待ください。

最後に、皆様からのご意見やアイデアはいつでも大歓迎です。どうぞお気軽に以下のコメント欄をお使いいただくか、私に直接ご連絡ください。

この PowerShell スクリプトを皆様にお役立ていただけましたら光栄です。最後までお読みいただき、ありがとうございました。

Dan Sheehan
シニア プレミア フィールド エンジニア