從 Exchange Server 的佇列匯出郵件

適用於:yes-img-162016 yes-img-192019 yes-img-se訂閱版本

您可以在 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 的伺服器上採取下列動作:

  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}