Exchange Serverのキューからメッセージをエクスポートする
Exchange Serverのメールボックス サーバーとエッジ トランスポート サーバーでは、キュー内のメッセージをファイルにエクスポートできます。 エクスポートされたメッセージはキューから削除されません。 メッセージのコピーは、プレーン テキスト ファイルとして指定された場所に作成されます。 メッセージ ファイルはメモ帳または Outlook で表示できます。また、Exchange 組織内外の他のメールボックス サーバーまたはエッジ トランスポート サーバーの再生ディレクトリを使用して、メッセージ ファイルを再送信できます。
はじめに把握しておくべき情報
各手順の推定完了時間:5 分
この手順を実行する際には、あらかじめアクセス許可が割り当てられている必要があります。 必要なアクセス許可を確認するには、「 メール フローのアクセス許可 」の「キュー」エントリに関するトピックを参照してください。
配信キュー、送信キュー、または到達不能キューからメッセージをエクスポートするには、メッセージを中断状態にする必要があります。 アクティブで正常なキューの場合は、まずキューを中断して、メッセージを一時停止できます。 有害メッセージ キューに置かれたメッセージは、既に中断状態になっています。 詳細については、「 キューの中断 」および「キュー 内のメッセージの中断」を参照してください。
Exchange ツールボックスのキュー ビューアーを使用して、メッセージをエクスポートすることはできません。 ただし、Exchange 管理シェルを使用してメッセージをエクスポートする前に、キュー ビューアーを使用してメッセージを見つけ、特定し、中断できます。 キュー ビューアーの詳細については、「キュー ビューアー」をご覧ください。 オンプレミスの Exchange 組織で Exchange 管理シェルを開く方法については、「 Open the Exchange Management Shell」をご覧ください。
キューからメッセージをエクスポートする場合は、キューからメッセージを削除しません。 再生ディレクトリを使用してエクスポートされたメッセージを再送信する場合は、メッセージの配信が重複しないようにキューからメッセージを削除する必要があります。 詳細については、「キューからメッセージを削除する」を参照してください。
エクスポートされたメッセージ ファイルのターゲットの場所に関する次の情報を確認します。
- メッセージをエクスポートする前にターゲット フォルダーが存在する必要があり、自動的には作成されません。 完全なパスを指定しない場合、ファイルは現在の Exchange Management Shell 作業ディレクトリに書き込まれます。
- パスは、Exchange サーバーに対してローカルにすることも、リモート サーバー (\server\share) 上の共有への UNC パスにすることもできます。
- アカウントには、ターゲット フォルダーに 書き込み アクセス許可が必要です。
一意性を確保するために、エクスポートされたメッセージ ファイル名にメッセージの InternetMessageID プロパティ値を使用します。 プロシージャには、山かっこ (> と <) を削除する手順が含まれています。ファイル名では使用できないためです。 また、.eml ファイル名拡張子を使用して、Outlook でファイルを簡単に開いたり、再生ディレクトリを使用してファイルを再送信したりできます。
キュー内のキューとメッセージの ID とフィルターの詳細については、次のトピックを参照してください。
このトピックの手順で使用可能なキーボード ショートカットについては、「Exchange 管理センターのキーボード ショートカット」を参照してください。
ヒント
問題がある場合は、 Exchange Server、Exchange Online、Exchange Online Protection。 必要な作業 シェルを使用して送信者フィルターを有効または無効にする
Exchange 管理シェルを使用してキューから特定のメッセージをエクスポートする
キューから特定のメッセージをエクスポートするには、次の構文を使用します。
Export-Message -Identity <MessageIdentity> | AssembleMessage -Path <FilePath>\<FileName>.eml
この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。
contoso.com 配信キューを中断します。
InternalMessageID 値が 1234 であるキュー内のメッセージを中断します。
メッセージのコピーを 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 という名前のサーバーで次のアクションを実行します。
- contoso.com 配信キューを中断します。
- キュー内のすべてのメッセージを中断します。
- メッセージのコピーを 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 という名前のサーバーで次のアクションを実行します。
- サーバー上のすべてのキューを一時停止します。
- サーバー上のすべてのキュー内のすべてのメッセージを、fabrikam.com ドメイン内の送信者から一時停止します。
- メッセージのコピーを 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 という名前のサーバーで次のアクションを実行します。
- サーバー上のすべてのキューを一時停止します。
- サーバー上のすべてのキュー内のすべてのメッセージを中断します。
- メッセージのコピーを 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}