ไม่ว่าคุณจะลบ Mailbox ของบุคคลใดบุคคลหนึ่งใน Exchange อย่างไรโดยไม่ได้ตั้งใจ คุณน่าจะสามารถกู้คืนได้โดยใช้ PowerShell (PoSh) จุดสำคัญคือต้องทำให้เร็วที่สุดเมื่อคุณตระหนักว่า Mailbox ถูกลบแล้ว
เป็นช่วงเวลาที่หัวใจตกสู่คอเมื่อเราตระหนักว่าเราทำเช่นนี้โดยไม่ได้ตั้งใจ หากคุณลบเพียงไม่กี่อีเมล เราสามารถแนะนำวิธีกู้คืนอีเมลที่ลบใน Office 365 ได้เช่นกัน
ก่อนเริ่ม โปรดทราบว่านี้สำหรับการกู้คืน Mailbox ที่ลบใน Exchange Online สำหรับสภาพแวดล้อม Office 365 และ Exchange 2010 เรายังสมมติว่าคุณมีสิทธิ์ผู้ดูแลระบบ (administrative rights) ในการใช้วิธีที่อธิบาย และเคยทำ PowerShell scripting พื้นฐานมาบ้าง
เกิดอะไรขึ้นเมื่อ Mailbox ถูกลบ?
Mailbox จะถูกย้ายไปที่ Azure Active Directory (AD) recycle bin ใน Exchange Online หรือไดเรกทอรี Disconnected Mailboxes ใน Exchange 2010
อาจอยู่ที่นั่นได้สูงสุด 30 วัน ขึ้นอยู่กับนโยบายการเก็บรักษา (retention policies) ที่มีอยู่ ซึ่งให้ช่วงเวลากรุณา (grace period) ให้เราตระหนักข้อผิดพลาดและกู้คืนได้
กู้คืน Mailbox ที่ลบใน Exchange Online
เชื่อมต่อกับ Exchange Online ผ่าน PowerShell
ในเซสชันท้องถิ่น (local session) ของคุณ เปิดคอนโซล PowerShell และใช้คำสั่งต่อไปนี้เพื่อตั้งค่าข้อมูลประจำตัวเข้าสู่ระบบ (login credentials) ลงในตัวแปร
$userCredential
สิ่งนี้ทำให้การทำงานกับสคริปต์อื่นๆ ในภายหลังง่ายขึ้น
$userCredential = get-Credential
หน้าต่างจะเปิดขึ้นเพื่อให้คุณป้อนชื่อผู้ใช้และรหัสผ่านสำหรับจัดการ Exchange Online
ต่อไป ตั้งค่าระดับนโยบายการดำเนินการ (execution policy) เพื่อให้เราสามารถทำงานในเซสชันของเราได้จริง สิ่งนี้อนุญาตให้เรารันคำสั่งที่ไม่ได้ลงนาม (unsigned commands) แตคุณอาจอยากเรียนรู้ best practices สำหรับการลงนาม PowerShell scripts ด้วย
set-ExecutionPolicy Unrestricted
เมื่อมีพร้อมท์ กด Y สำหรับ Yes
ตอนนี้เราจะสร้างตัวแปร $session เพื่อใช้เปิดการเชื่อมต่อระหว่างคอมพิวเตอร์ท้องถิ่นและ Exchange Online
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $userCredential -Authentication Basic -AllowRedirection
Powershell-liveid คือ ID ของไซต์ Office ของคุณ ปกติจะเป็นรูปแบบหนึ่งของชื่อบริษัทของคุณ
ใช้คำสั่งต่อไปนี้เพื่อเปิดเซสชัน PoSh บน Exchange Online:
import-PSSession $Session -DisableNameChecking
ตอนนี้เรากำลังทำงานกับ PowerShell โดยตรงใน Exchange Online แม้เราจะนั่งอยู่ที่คอมพิวเตอร์ของตัวเอง
กู้คืน Mailbox ที่ลบด้วย PowerShell
ส่วนต่อไปนี้ง่ายมาก การเชื่อมต่อใช้เวลานานกว่ามาก
เราต้องเพียงรัน cmdlet ที่แสดงด้านล่าง:
undo-SoftDeletedMailbox user@mycompany.com -WindowsLiveID user@mycompany.com -Password (ConvertTo-SecureString -String 'newpassword' -AsPlainText -Force)
เปลี่ยนทั้งสองอันของ user@mycompany.com ให้เป็นชื่อ Mailbox และ Windows LiveID ที่เหมาะสมของ Mailbox ที่เราต้องการกู้คืน โปรดทราบว่าพวกมันอาจไม่เหมือนกัน
เรายังต้องตั้งรหัสผ่านใหม่สำหรับ Mailbox เปลี่ยน newpassword ในสคริปต์เป็นรหัสผ่านที่คุณเลือก คุณจะต้องบอกผู้ใช้และขอให้พวกเขาเปลี่ยนรหัสผ่านครั้งหน้าที่ล็อกอิน
สุดท้าย ใช้ cmdtest ต่อไปนี้เพื่อตรวจสอบว่าทำงานสำเร็จหรือไม่
get-Mailbox user@mycompany.com
หากกู้คืนแล้ว cmdlet จะคืนข้อมูลเกี่ยวกับ Mailbox ที่กู้คืนแล้ว หากคืน error ให้ตรวจสอบคำสั่งอีกครั้ง และให้แน่ใจว่าใช้ Mailbox และ Windows LiveID ที่ถูกต้อง
หากยังไม่ได้ เราจะต้องกู้คืน Mailbox จาก system backup มีหลายประเภทของ system backup จึงอยู่นอกขอบเขตของสิ่งที่เราทำวันนี้
เมื่อเสร็จแล้ว เราต้องปิดเซสชัน PoSh จำนวนเซสชัน PoSh ที่เรามีจำกัด การทิ้งไว้เปิดจะใช้เซสชันหนึ่ง หากเราไม่ปิด เราจะต้องรอจนกว่าเซสชันจะหมดเวลา (time-out) ก่อนจะเริ่มเซสชันใหม่ได้
remove-PSSession $Session
แค่นี้ก็จบแล้ว คุณอาจอยากสคริปต์สิ่งนี้เป็น PowerShell Module เพื่อใช้งานง่ายขึ้น หากเกิดขึ้นอีก
กู้คืน Mailbox ที่ลบใน Exchange 2010
วิธีนี้ไม่ได้ทำงานสำหรับ Office 365 หรือสภาพแวดล้อมแบบ Hybrid ทำงานได้เฉพาะ Exchange 2010 on-premises เท่านั้น
บน Mail Server ให้เปิด Exchange Management Console (EMC)
นำทางไป Recipient Configuration > Disconnected Mailbox เราควรจะเห็น Mailbox ของผู้ใช้นั้นอยู่ที่นั่น
หากไม่เห็น แสดงว่า Mailbox database cleaning process ยังไม่เกิดขึ้น ไม่เป็นไร เราสามารถบังคับให้เกิดขึ้นได้
- เปิด Exchange Management Shell (EMS) เป็น Administrator นี่คือที่ที่เราทำ PowerShell เฉพาะ Exchange ได้
- ตอนนี้เราป้อน cmdlet:
Get-MailboxDatabase | Clean-MailboxDatabase
- เมื่อเสร็จแล้ว กลับไปที่ EMC คลิกขวาที่ Disconnected Mailbox แล้วคลิก Refresh
- เราควรจะเห็น Mailbox อยู่ที่นั่นตอนนี้ พร้อมกับอีกอันที่ลบไปเมื่อไม่นานมานี้
- กลับไปที่ EMS และป้อน cmdlet:
Connect-Mailbox -Identity "username" -Database "Mailbox Database" -User "username"
- Username คือชื่อบัญชี Windows ของคนนั้น (เช่น Test User) และ Mailbox Database คือชื่อฐานข้อมูลที่แสดงข้างๆ ชื่อของพวกเขาในหน้าต่าง Disconnected Mailbox ใน EMC
- Refresh Disconnected Mailbox และคุณควรจะเห็นว่า Mailbox ของพวกเขาไม่แสดงอยู่ที่นั่นแล้ว นำทางไป Recipient Configuration > Mailbox และตรวจสอบว่า Mailbox ของผู้ใช่อยู่ที่นั่น
ตรวจสอบให้แน่ใจว่าการตั้งค่าทั้งหมดถูกต้อง เช่น ที่อยู่อีเมลและ alias หากดูดี ตอนต่อไปที่ผู้ใช้เปิด Outlook ของพวกเขา ทุกอย่างจะอยู่ที่นั่นเหมือนเดิม
Mailbox กู้คืนแล้ว
นี่คือวิธีใช้ PowerShell กู้คืน Mailbox ใน Exchange Online และ Exchange 2010 หากคุณมีสภาพแวดล้อมแบบ Hybrid มันซับซ้อนกว่านี้เล็กน้อย แตทำได้
เพียงแค่รู้ว่า cmdlet ต่างๆ นี้มีอยู่ วางคุณในตำแหน่งที่ดีในการทำงานกับ Exchange ไม่ว่าจะเป็นเวอร์ชันหรือการกำหนดค่าใดๆ