Dù bạn xóa mailbox của ai đó trong Exchange như thế nào, bạn có thể khôi phục bằng PowerShell (PoSh). Chìa khóa là làm ngay khi nhận ra mailbox đã bị xóa.
Đây là khoảnh khắc "tim nhảy lên cổ" khi nhận ra mình đã vô tình làm vậy. Nếu bạn chỉ xóa vài email, chúng tôi có thể hướng dẫn khôi phục email đã xóa trong Office 365.
Trước khi bắt đầu, lưu ý rằng hướng dẫn này dành cho khôi phục mailbox đã xóa trong Exchange Online cho môi trường Office 365 và Exchange 2010. Chúng tôi cũng giả định bạn có quyền admin để dùng các phương pháp mô tả và đã có kiến thức PowerShell cơ bản.
Điều gì xảy ra khi Mailbox bị xóa?
Mailbox được chuyển đến Thùng rác Azure Active Directory (AD) trong Exchange Online hoặc thư mục Disconnected Mailboxes trong Exchange 2010.
Nó có thể ở đó lên đến 30 ngày tùy theo chính sách lưu giữ. Điều này cho chúng ta một khoảng thời gian ân hạn để nhận ra lỗi và khắc phục.
Khôi phục Mailbox đã xóa trong Exchange Online
Kết nối với Exchange Online qua PowerShell
Trong phiên cục bộ, mở console PowerShell và dùng lệnh sau để đặt thông tin đăng nhập vào biến.
$userCredential
Điều này giúp dễ dàng làm việc với các script sau này.
$userCredential = get-Credential
Một cửa sổ sẽ mở ra để bạn nhập username và password quản trị Exchange Online.
Tiếp theo, đặt mức execution policy để có thể chạy lệnh trong phiên. Điều này cho phép chạy lệnh chưa ký. Nhưng bạn cũng nên học best practices cho việc ký script PowerShell.
set-ExecutionPolicy Unrestricted
Khi được hỏi, nhấn Y cho Yes.
Bây giờ tạo biến $session để mở kết nối giữa máy cục bộ và Exchange Online.
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $userCredential -Authentication Basic -AllowRedirection
Powershell-liveid là ID của trang Office của bạn. Thường là biến thể của tên công ty.
Dùng lệnh sau để mở phiên PoSh trên Exchange Online:
import-PSSession $Session -DisableNameChecking
Bây giờ chúng ta làm việc với PowerShell trực tiếp trên Exchange Online, dù đang ngồi tại máy của mình.
Khôi phục Mailbox đã xóa bằng PowerShell
Phần tiếp theo siêu dễ. Việc kết nối đã tốn thời gian lâu hơn nhiều.
Chúng ta chỉ cần chạy cmdlet dưới đây:
undo-SoftDeletedMailbox user@mycompany.com -WindowsLiveID user@mycompany.com -Password (ConvertTo-SecureString -String 'newpassword' -AsPlainText -Force)
Thay đổi cả hai lần user@mycompany.com thành tên mailbox và Windows LiveID phù hợp của mailbox muốn khôi phục. Lưu ý chúng có thể không giống nhau.
Chúng ta cũng phải đặt mật khẩu mới cho mailbox. Thay newpassword trong script bằng mật khẩu bạn chọn. Bạn cần chuyển mật khẩu đó cho người dùng và yêu cầu họ đổi mật khẩu lần đăng nhập sau.
Cuối cùng, dùng cmdlet sau để kiểm tra xem đã thành công chưa.
get-Mailbox user@mycompany.com
Nếu đã khôi phục, cmdlet sẽ trả về thông tin mailbox đã khôi phục. Nếu báo lỗi, hãy chạy lại các lệnh và đảm bảo mailbox và Windows LiveID đúng. Nếu vẫn không được, cần khôi phục mailbox từ bản sao lưu hệ thống. Có nhiều loại backup, vượt quá phạm vi hôm nay.
Khi xong, phải đóng phiên PoSh. Số phiên PoSh chạy đồng thời bị giới hạn. Để mở sẽ dùng một phiên. Không đóng thì phải chờ timeout mới bắt đầu phiên khác được.
remove-PSSession $Session
Xong. Bạn có thể muốn script thành PowerShell Module để dễ dùng nếu việc này xảy ra lại.
Khôi phục Mailbox đã xóa trong Exchange 2010
Cách này không dành cho Office 365 hoặc môi trường hybrid. Chỉ dành cho Exchange 2010 on-premises.
Trên mail server, mở Exchange Management Console (EMC).
Điều hướng đến Recipient Configuration > Disconnected Mailbox. Chúng ta nên thấy mailbox của người dùng ở đó.
Nếu không thấy, quy trình dọn dẹp database mailbox chưa xảy ra. Không sao, chúng ta có thể ép buộc.
- Mở Exchange Management Shell (EMS) với quyền admin. Đây là nơi làm việc PowerShell đặc thù Exchange.
- Nhập cmdlet:
Get-MailboxDatabase | Clean-MailboxDatabase
- Khi xong, quay lại EMC, nhấp chuột phải vào Disconnected Mailbox, chọn Refresh.
- Chúng ta nên thấy mailbox đó bây giờ, cùng với một mailbox khác vừa bị xóa gần đây.
- Quay lại EMS và nhập cmdlet:
Connect-Mailbox -Identity "username" -Database "Mailbox Database" -User "username"
- Username là tên tài khoản Windows của người đó (ví dụ Test User), và Mailbox Database là tên database liệt kê bên cạnh tên họ trong cửa sổ Disconnected Mailbox trong EMC.
- Refresh Disconnected Mailbox và bạn sẽ thấy mailbox của họ không còn hiển thị đó. Điều hướng đến Recipient Configuration > Mailbox và đảm bảo mailbox của người dùng ở đó.
Kiểm tra đảm bảo mọi cài đặt đúng, như địa chỉ email và alias. Nếu trông tốt, lần sau người dùng mở Outlook, mọi thứ sẽ y nguyên như trước.
Mailbox đã được khôi phục
Đó là cách dùng PowerShell khôi phục mailbox trong Exchange Online và Exchange 2010. Nếu bạn có môi trường hybrid, phức tạp hơn nhưng vẫn làm được.
Chỉ việc biết các cmdlet khác nhau này tồn tại đã đặt bạn ở vị trí tốt để làm việc với Exchange, bất kể phiên bản hoặc cấu hình nào.