วิธีนำเข้าและส่งออกกล่องจดหมายไปยัง 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 10New-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-ListRunspaceId : 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




