Exchange Server のキューからメッセージをエクスポートする

適用対象: yes-img-162016 yes-img-192019 yes-img-seサブスクリプション エディション

Exchange Server のメールボックス サーバーとエッジ トランスポート サーバーでは、キュー内のメッセージをファイルにエクスポートできます。 エクスポートされたメッセージはキューから削除されません。 メッセージのコピーは、プレーン テキスト ファイルとして指定された場所に作成されます。 メッセージ ファイルはメモ帳または Outlook で表示でき、Exchange organization 内外の他のメールボックス サーバーまたはエッジ トランスポート サーバー上の再生ディレクトリを使用してメッセージ ファイルを再送信できます。

はじめに把握しておくべき情報

  • 各手順の推定完了時間:5 分

  • この手順を実行する際には、あらかじめアクセス許可が割り当てられている必要があります。 必要なアクセス許可を確認するには、「メール フローのアクセス許可」トピックの「キュー」エントリを参照してください。

  • 配信キュー、送信キュー、または到達不能キューからメッセージをエクスポートするには、メッセージを Suspended 状態である必要があります。 アクティブで正常なキューの場合は、まずキューを一時停止してから、メッセージを一時停止できるようにします。 有害メッセージ キューに置かれたメッセージは、既に中断状態になっています。 詳細については、「 キューの一時停止 」と「 キュー内のメッセージを一時停止する」を参照してください。

  • Exchange ツールボックスのキュー ビューアーを使用して、メッセージをエクスポートすることはできません。 ただし、Exchange 管理シェルを使用してメッセージをエクスポートする前に、キュー ビューアーを使用してメッセージを検索、識別、一時停止できます。 キュー ビューアーの詳細については、「キュー ビューアー」をご覧ください。 オンプレミスの Exchange 組織で Exchange 管理シェルを開く方法については、「 Open the Exchange Management Shell」をご覧ください。

  • キューからメッセージをエクスポートしても、キューからメッセージを削除しません。 Replay ディレクトリを使用してエクスポートしたメッセージを再送信する場合は、メッセージが重複して配信されないように、キューからメッセージを削除する必要があります。 詳細については、「キューからメッセージを削除する」を参照してください。

  • エクスポートするメッセージ ファイルのターゲットの場所に関する次の情報を確認します。

    • ターゲット フォルダーは、メッセージをエクスポートする前に存在している必要があり、自動的に作成されません。 完全なパスを指定しない場合、ファイルは現在の Exchange 管理シェルの作業ディレクトリに書き込まれます。
    • このパスは、Exchange サーバーにとってローカルなパスと、リモート サーバー上の共有 (\server\share) への UNC パスにすることができます。
    • アカウントには、ターゲット フォルダーでの 書き込み アクセス許可が必要です。
  • 一意性を確保するために、メッセージの InternetMessageID プロパティ値をエクスポートするメッセージ ファイル名を使用します。 ファイル名では山かっこ (> と <) は使用できないため、手順には削除手順が含まれています。 また、.eml ファイル名拡張子を使用しているため、Outlook でファイルを簡単に開いたり、Replay ディレクトリを使用してファイルを再送信したりできます。

  • キュー内のキューとメッセージの ID とフィルターの詳細については、次のトピックを参照してください。

  • このトピックの手順で使用可能なキーボード ショートカットについては、「Exchange 管理センターのキーボード ショートカット」を参照してください。

ヒント

問題がある場合は、 Exchange の Exchange Server フォーラムでヘルプを依頼する |Exchange Server |管理

Exchange 管理シェルを使用してキューから特定のメッセージをエクスポートする

キューから特定のメッセージをエクスポートするには、次の構文を使用します。

Export-Message -Identity <MessageIdentity> | AssembleMessage -Path <FilePath>\<FileName>.eml

この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。

  1. contoso.com 配信キューを一時停止します。

  2. InternalMessageID 値が 1234 のキュー内のメッセージを一時停止します。

  3. メッセージのコピーをファイル D:\contoso Export\export.eml にエクスポートします。

Suspend-Queue Mailbox01\contoso.com
Suspend-Message -Identity Mailbox01\contoso.com\1234
Export-Message -Identity Mailbox01\contoso.com\1234 | AssembleMessage -Path "D:\Contoso Export\export.eml"

Exchange 管理シェルを使用してキューからすべてのメッセージをエクスポートする

キューからすべてのメッセージをエクスポートし、各メッセージの InternetMessageID 値をファイル名として使用するには、次の構文を使用します。

Get-Message -Queue <QueueIdentity> -ResultSize Unlimited | ForEach-Object {$Temp=<Path>+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。

  1. contoso.com 配信キューを一時停止します。
  2. キュー内のすべてのメッセージを一時停止します。
  3. D:\Contoso Export という名前のローカル フォルダーにメッセージのコピーをエクスポートします。
Suspend-Queue Mailbox01\contoso.com
Get-Queue Mailbox01\contoso.com | Get-Message -ResultSize Unlimited | Suspend-Message
Get-Message -Queue Mailbox01\Contoso.com -ResultSize Unlimited | ForEach-Object {$Temp="D:\Contoso Export\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

Exchange 管理シェルを使用して、サーバー上のすべてのキューから特定のメッセージをエクスポートする

サーバー上のすべてのキューから特定のメッセージをエクスポートし、各メッセージの InternetMessageID 値をファイル名として使用するには、次の構文を使用します。

Get-Message -Filter "<MessageFilter>" [-Server <ServerIdentity>] -ResultSize Unlimited | ForEach-Object {$Temp=<Path>+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。

  1. サーバー上のすべてのキューを一時停止します。
  2. サーバー上のすべてのキューのすべてのメッセージを、fabrikam.com ドメインの送信者から一時停止します。
  3. D:\Fabrikam Export という名前のローカル フォルダーにメッセージのコピーをエクスポートします。
Suspend-Queue -Server Mailbox01
Suspend-Message -Filter "FromAddress -like '*@fabrikam.com'" -Server Mailbox01
Get-Message -Filter "FromAddress -like '*@fabrikam.com'" -Server Mailbox01 -ResultSize Unlimited | ForEach-Object {$Temp="D:\Fabrikam Export\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

Exchange 管理シェルを使用して、サーバー上のすべてのキューからすべてのメッセージをエクスポートする

サーバー上のすべてのキューからすべてのメッセージをエクスポートし、各メッセージの InternetMessageID 値をファイル名として使用するには、次の構文を使用します。

Get-Message [-Server <ServerIdentity>] -ResultSize Unlimited | ForEach-Object {$Temp=<Path>+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。

  1. サーバー上のすべてのキューを一時停止します。
  2. サーバー上のすべてのキューにあるすべてのメッセージを一時停止します。
  3. D:\Mailbox01 Export という名前のローカル フォルダーにメッセージのコピーをエクスポートします。
Suspend-Queue -Server Mailbox01
Get-Queue -Server Mailbox01 | Get-Message -ResultSize Unlimited | Suspend-Message
Get-Message -Server Mailbox01 -ResultSize Unlimited | ForEach-Object {$Temp="D:\Mailbox01 Export\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}