ค้นหาเว็บไซต์

วิธีนำเข้าและส่งออกกล่องจดหมายไปยัง PST ใน Exchange 2016/2013/2010


ใน Exchange Server 2010 SP1 (และใหม่กว่า) PowerShell cmdlet พิเศษปรากฏขึ้น: New-MailboxImportRequest และ New-MailboxExportRequest ซึ่งอนุญาตให้คุณนำเข้าหรือส่งออกเนื้อหาของ แลกเปลี่ยนกล่องจดหมายจาก/เป็นไฟล์ PST ใน Exchange เวอร์ชันก่อนหน้า เพื่อนำเข้า/ส่งออกข้อมูลจาก Exchange ไปยังไฟล์ PST คุณต้องใช้โปรแกรมอรรถประโยชน์ของบุคคลที่สาม (โดยมากมักใช้โปรแกรมอรรถประโยชน์ ExMerge)

ใน Exchange 2016, 2013 และ Office 365 ทีมพัฒนา Exchange ยังคงพัฒนา Exchange cmdlet สำหรับการนำเข้า/ส่งออกไปยังไฟล์ PST ขยายฟังก์ชันการทำงานเล็กน้อยและเพิ่มประสิทธิภาพ ในบทความนี้ เราจะกล่าวถึงตัวอย่างทั่วไปของการนำเข้า/ส่งออกข้อมูลจากกล่องจดหมาย Exchange ไปยังไฟล์โฟลเดอร์ส่วนบุคคล (PST)

สิทธิ์นำเข้าและส่งออกกล่องจดหมายใน Exchange

ต้องกำหนดบทบาท RBAC “นำเข้ากล่องจดหมายส่งออก” ให้กับบัญชีผู้ดูแลระบบที่คุณต้องการนำเข้าหรือส่งออกกล่องจดหมาย Exchange ไปยัง PST (ตามค่าเริ่มต้น แม้แต่ผู้ดูแลระบบ Exchange ก็ไม่มีสิทธิ์เหล่านี้) คุณสามารถกำหนดบทบาทนี้ให้กับบัญชีของคุณโดยใช้ Exchange Management Shell:

New-ManagementRoleAssignment -Role “Mailbox Import Export” -User fr_exchange_admin

ที่ไหน

fr_exchange_admin

- เป็นชื่อของบัญชีที่ได้รับสิทธิ์ตามบทบาท "นำเข้าส่งออกกล่องจดหมาย "

เคล็ดลับ เพื่อให้การจัดการง่ายขึ้น โดยปกติแล้วบทบาท "นำเข้ากล่องจดหมายนำเข้าส่งออก " จะถูกกำหนดให้กับกลุ่มความปลอดภัยโฆษณา ในภายหลัง หากต้องมอบสิทธิ์นี้ให้กับผู้ใช้รายอื่น การเพิ่มบัญชีผู้ใช้ลงในกลุ่มโดเมนนี้ก็เพียงพอแล้ว ในกรณีนี้ ไวยากรณ์คำสั่งจะแตกต่างกันเล็กน้อย (สมมติว่า ชื่อของกลุ่ม AD คือ ExchangeAdmGroup):

New-ManagementRoleAssignment -Role "Mailbox Import Export" -SecurityGroup ExchangeAdmGroup

สามารถทำได้เช่นเดียวกันจากอินเทอร์เฟซกราฟิก EAC (Exchange Admin Center) โดยกำหนด Mailbox Import Export ให้กับผู้ใช้หรือกลุ่มที่ต้องการ

หลังจากให้สิทธิ์ RBAC แล้ว ให้รีสตาร์ทคอนโซล EAC หรือ Management Shell

ใหม่ MailboxImportRequest: การนำเข้า PST Fie ไปยัง Exchange Mailbox

หากต้องการนำเข้าไฟล์ PST ไปยังกล่องจดหมาย Exchange คุณต้องมีสิ่งต่อไปนี้นอกเหนือจากสิทธิ์ RBAC:

  • กล่องจดหมาย Exchange เป้าหมายต้องมีอยู่

  • ไฟล์ PST ต้องอยู่ในโฟลเดอร์เครือข่ายที่ใช้ร่วมกัน และคุณต้องทราบเส้นทาง UNC แบบเต็ม (อย่าลืมว่าไฟล์ในเครื่องของคอมพิวเตอร์บางเครื่องสามารถเข้าถึงได้ผ่านเส้นทางเครือข่าย เช่น \PCName111\C$\PST stmail.pst);

  • ผู้ใช้ที่ดำเนินการนำเข้าต้องมีสิทธิ์อ่าน NTFS ในโฟลเดอร์เครือข่ายที่มีไฟล์เก็บถาวรจดหมาย PST

ใช้คำสั่งต่อไปนี้เพื่อนำเข้าเนื้อหาของไฟล์ PST จากโฟลเดอร์ที่ใช้ร่วมกันไปยังกล่องจดหมายของผู้ใช้ usertest

New-MailboxImportRequest -Mailbox usetest -FilePath \\HQ-FS01\PST\usetest.pst

เมื่ออิมพอร์ตไปยังกล่องเป้าหมาย เนื้อหาของโฟลเดอร์ที่มีอยู่จะถูกรวมเข้าด้วยกัน และโฟลเดอร์ใหม่จะถูกเพิ่มไปยังโครงสร้างโฟลเดอร์เมลที่มีอยู่

เนื้อหาของไฟล์ PST ไม่สามารถนำเข้าไปยังรูทของกล่องจดหมาย Exchange แต่นำเข้าโฟลเดอร์ใดโฟลเดอร์หนึ่งที่มีอยู่ของกล่องจดหมาย (เช่น “Old_mail ”) ตัวอย่างเช่น คุณต้องนำเข้าเฉพาะเนื้อหาของโฟลเดอร์ Inbox ไปยังโฟลเดอร์กล่องจดหมายเป้าหมาย Old_mail:

New-MailboxImportRequest -Mailbox usetest -FilePath \\HQ-FS01\PST\usetest.pst  -TargetRootFolder "Old_mail" -IncludeFolders "#Inbox#"

เคล็ดลับ นี่คือรายการทั้งหมดของโฟลเดอร์มาตรฐานในกล่องจดหมาย Exchange (Outlook):

  • Inbox
  • SentItems
  • DeletedItems
  • Calendar
  • Contacts
  • Drafts
  • Journal
  • Tasks
  • Notes
  • JunkEmail
  • CommunicationHistory
  • Voicemail
  • Fax
  • Conflicts
  • SyncIssues
  • LocalFailures
  • ServerFailures

หลังจากรันคำสั่งนำเข้าแล้ว คำขอนำเข้าจะเข้าคิวสำหรับการประมวลผลโดยเซิร์ฟเวอร์ Exchange (การประมวลผลจะดำเนินการบนเซิร์ฟเวอร์ที่มีบทบาท Client Access Server) หากต้องการดูคิวคำขอนำเข้า ให้รันคำสั่งนี้:

Get-MailboxImportRequest

สามารถรับสถานะงานคำขอนำเข้า (กำลังดำเนินการ เสร็จสมบูรณ์ จัดคิวแล้ว) สำหรับกล่องจดหมายที่ระบุได้ดังนี้:

Get-MailboxImportRequest mailtst

หากต้องการดูข้อมูลเกี่ยวกับสถานะคำขอนำเข้า (เป็นเปอร์เซ็นต์) ให้เรียกใช้คำสั่งด้านล่าง:

Get-MailboxImportRequest | Get-MailboxImportRequestStatistics

คำขอนำเข้าที่เสร็จสมบูรณ์สามารถลบออกจากคิวได้ด้วยคำสั่งนี้:

Get-MailboxImportRequest -Status Completed | Remove-MailboxImportRequest

หากต้องการนำเข้ารายการอีเมลจำนวนมากจากไฟล์ PST ไปยังกล่องจดหมายของผู้ใช้หลายกล่อง คุณสามารถใช้คำสั่งนี้ (จะถือว่าชื่อของไฟล์ pst ตรงกับชื่อของกล่องจดหมายของผู้ใช้):

Foreach ($i in (Get-Mailbox)) { New-MailboxImportRequest -Mailbox $i -FilePath "\\HQ-FS01\PST\$($i.Alias).pst" }

หากกระบวนการนำเข้าล้มเหลว คุณจะได้รับข้อมูลโดยละเอียดเกี่ยวกับสาเหตุจากรายงานที่สร้างขึ้นดังนี้:


Get-MailboxImportRequest -Status Failed | Get-MailboxImportRequestStatistics -IncludeReport | Format-List > AllImportReports.txt

ในกรณีส่วนใหญ่ ข้อผิดพลาดในการนำเข้าเกิดขึ้นเนื่องจาก:

  • ความเสียหายเชิงตรรกะของโครงสร้างไฟล์ PST (คุณสามารถซ่อมแซมไฟล์ Outlook PST โดยใช้ scanpst.exe)

  • หากขนาดกล่องจดหมายของผู้ใช้เกินขีดจำกัดที่ระบุ

คุณสามารถระบุจำนวนรายการที่ไม่ถูกต้องในไฟล์ PST ที่สามารถข้ามได้ระหว่างการนำเข้า คำสั่งต่อไปนี้จะนำเข้าข้อมูลจากไฟล์ PST ไปยังกล่องจดหมาย Exchange และข้ามสิบรายการแรกที่ล้มเหลวก่อนที่จะสร้างข้อผิดพลาดในการนำเข้า:

New-MailboxImportRequest -Mailbox mailtst -FilePath \\HQ-FS01\PST\usetest.pst -BadItemLimit 10

New-MailboxExportRequest: การส่งออกรายการกล่องจดหมาย Exchange ไปยังไฟล์ PST

การส่งออกเนื้อหาของกล่องจดหมาย Exchange จะคล้ายกับการนำเข้า หากต้องการส่งออกเนื้อหาของกล่องจดหมายเป็นไฟล์ PST ให้ใช้ cmdlet New-MailboxExportRequest หากต้องการส่งออกกล่องจดหมายของผู้ใช้ mailtst ไปยังโฟลเดอร์เครือข่ายที่ใช้ร่วมกัน (ไดเรกทอรีนี้ต้องสร้างล่วงหน้า และคุณต้องให้สิทธิ์ในการอ่านและเขียนในโฟลเดอร์นี้สำหรับกลุ่มโดเมน Exchange Trusted Subsystem) ให้เรียกใช้คำสั่งต่อไปนี้ :

New-MailboxExportRequest -Mailbox mailtst -FilePath \\HQ-FS01\ExportPST\mailtst.pst

หากคุณต้องส่งออกไปยังไฟล์ PST เฉพาะรายการอีเมลจากโฟลเดอร์เฉพาะ เช่น กล่องขาเข้า คำสั่งจะมีลักษณะดังนี้:

New-MailboxExportRequest -Mailbox mailtst -FilePath \\HQ-FS01\ExportPST\mailtst.pst -IncludeFolders “#Inbox#”

หากต้องการแยกโฟลเดอร์ออกจากการส่งออก ให้ใช้พารามิเตอร์ ExcludeFolders ตัวอย่างเช่น คุณไม่จำเป็นต้องส่งออกรายการที่ถูกลบไปยังไฟล์ PST:

New-MailboxExportRequest -Mailbox mailtst -FilePath \\HQ-FS01\ExportPST\mailtst.pst -ExcludeFolders “#DeletedItems#”

ลองพิจารณางานที่ซับซ้อนมากขึ้น: สมมติว่าคุณต้องส่งออกอีเมลทั้งหมดที่ได้รับหลังวันที่ 1 มกราคม 2019 ซึ่งมีคำหลัก "Project " และ "London "

New-MailboxExportRequest -Mailbox mailtst -FilePath \\HQFS01\ExportPST\mailtst.pst -ContentFilter {(body -like “*Project*”) -and {body -like “*London*”) -and (Received -lt “01/01/2019”)}

คุณยังสามารถส่งออกรายการเฉพาะจากโฟลเดอร์ที่ระบุด้วยผลการค้นหากล่องจดหมายการค้นหา ซึ่งได้รับโดยใช้ cmdlet ค้นหากล่องจดหมาย

คำของานส่งออกยังอยู่ในคิวบนเซิร์ฟเวอร์ Exchange หากต้องการดูสถานะงานส่งออก ให้รันคำสั่งนี้:

Get-MailboxExportRequest -Mailbox "mailtst" | Format-List

RunspaceId : 3233f0d3-1b4b-4610-b0a2-6f29a543cc54
FilePath : \\HQFS01\ExportPST\mailtst.pst
SourceDatabase : db1
Mailbox :
Name : MailboxExport
RequestGuid : e03de01f-3333-111a-95fa-23faaf97ebf9
RequestQueue : db1
Flags : IntraOrg, Push
BatchName :
Status : Completed
Protect : False
Suspend : False
Direction : Push
RequestStyle : IntraOrg
OrganizationId :
Identity : mailtst\MailboxExport
IsValid : True
ObjectState : New

อย่าลืมทำความสะอาดคำขอที่เสร็จสิ้นแล้วเป็นระยะๆ สำหรับการส่งออกกล่องจดหมายไปยังไฟล์ PST:

Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest

เมื่อส่งออกกล่องจดหมายของผู้ใช้เป็นไฟล์ PST เนื้อหากล่องจดหมายของผู้ใช้ในเซิร์ฟเวอร์ Exchange จะไม่ถูกล้าง

คุณสามารถส่งออกกล่องจดหมายของผู้ใช้หลายคนเป็นกลุ่มได้ สร้างไฟล์ข้อความ csv ในรูปแบบต่อไปนี้:

Username, UNCPathtoPst
t.holland,\\HQFS01\ExportPST\holland.pst
d.orr,\\HQFS01\ExportPST\orr.pst

เรียกใช้การส่งออกกล่องจดหมายของผู้ใช้เป็นไฟล์ PST:

Import-CSV "C:\ps\user_list_export_pst.csv" | ForEach {New-MailboxExportRequest -Mailbox $_.username -FilePath $_.UNCPathtoPst

บทความที่เกี่ยวข้อง