適用於:
2016
2019
訂閱版本
您可以在 Exchange Server 的信箱伺服器和邊緣傳輸伺服器上,將佇列中的郵件匯出至檔案。 匯出的郵件不會從佇列中移除。 郵件的副本會以純文本檔的形式在指定位置製作。 您可以在記事本或 Outlook 中檢視郵件檔案,而且可以使用 Exchange 組織內外任何其他信箱伺服器或邊緣傳輸伺服器上的 Replay 目錄重新提交郵件檔案。
開始之前有哪些須知?
每項程序的預估完成時間:5 分鐘
您必須已獲指派權限,才能執行此程序或這些程序。 若要查看您需要的權限,請參閱 郵件流程權限主題中的「佇列」項目。
若要從傳遞佇列、提交佇列或無法連線佇列匯出訊息,訊息必須處於暫停狀態。 對於作用中、運作狀態良好的佇列,請先暫停佇列,然後才能暫停訊息。 毒藥郵件佇列中的郵件已處於「已擱置」狀態。 如需詳細資訊,請參閱 暫停佇列 和 暫停佇列中的訊息。
您無法使用 Exchange 工具箱的佇列檢視器來匯出郵件。 不過,您可以使用佇列檢視器來尋找、識別及暫停訊息,然後再使用 Exchange 管理命令介面匯出訊息。 如需佇列檢視器的詳細資訊,請參閱 佇列檢視器。 若要了解如何在內部部署 Exchange 組織中開啟 Exchange 管理命令介面,請參閱 Open the Exchange Management Shell。
從佇列中匯出郵件時,不會從佇列中移除郵件。 如果您使用 Replay 目錄重新提交匯出的訊息,則應從佇列中移除訊息,以避免重複的訊息傳遞。 如需詳細資訊,請參閱 從佇列移除訊息。
請確認下列有關匯出訊息檔案目標位置的資訊:
- 在匯出任何郵件之前,必須先有目標資料夾,而且系統不會為您建立。 如果未指定完整路徑,則檔案會寫入目前的 Exchange 管理命令介面工作目錄。
- 路徑可以是 Exchange 伺服器的本機路徑,也可以是遠端伺服器上共用的 UNC 路徑 (\server\share) 。
- 您的帳戶必須在目標資料夾中具有 寫入 權限。
我們針對匯出的訊息檔案名稱使用訊息的 InternetMessageID 屬性值,以協助確保唯一性。 程序包含移除尖括弧 (> 和 <) 的步驟,因為它們無法出現在檔案名稱中。 此外,我們也使用 .eml 副檔名,以便您輕鬆地在 Outlook 中開啟檔案,或使用 Replay 目錄重新提交檔案。
如需佇列中佇列和訊息的身分識別和篩選的詳細資訊,請參閱下列主題:
如需適用於此主題中程序的快速鍵相關資訊,請參閱 Exchange 系統管理中心的鍵盤快速鍵。
提示
有問題嗎? 在 Exchange 的 Exchange Server 論壇中尋求協助 |Exchange Server |管理。
使用 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}