Exchange 에서 실수로 사람의 사서함을 어떻게 삭제했든 상관없이 PowerShell ( PoSh ) 을 사용하여 복원할 수 있습니다 . 열쇠는 사서함이 삭제되었음을 깨닫는 즉시 수행하는 것입니다.
우리가 실수로 이것을 했다는 것을 깨닫는 것은 가슴이 벅차오르는 순간입니다. 전자 메일 메시지를 몇 개만 삭제한 경우 Office 365에서 삭제된 전자 메일을 복구하는 방법(how to recover deleted emails in Office 365) 도 보여드릴 수 있습니다.
시작하기 전에 이는 Office 365 환경 및 Exchange 2010 용 (Exchange 2010)Exchange Online 에서 삭제된 사서함을 복원하기 위한 것임을 유의하십시오 . 또한 설명된 방법을 사용할 수 있는 관리 권한이 있고 몇 가지 기본 PowerShell 스크립팅(basic PowerShell scripting) 을 수행했다고 가정합니다 .
사서함이 삭제되면 어떻게 됩니까?(What Happens When a Mailbox Is Deleted?)
사서함은 Exchange Online 의 (Exchange Online)Azure(Azure Active Directory ) AD(Active Directory) 휴지통 또는 Exchange 2010 의 연결이 끊긴 사서함 디렉터리로 이동됩니다.(Disconnected Mailboxes )
보관 정책에 따라 최대 30일 동안 보관될 수 있습니다. 그것은 우리에게 우리의 실수를 인식하고 그것으로부터 회복할 수 있는 유예 기간을 제공합니다.
Exchange Online에서 삭제된 사서함 복원(Restore a Deleted Mailbox In Exchange Online)
PowerShell을 통해 Exchange Online에 연결(Connect To Exchange Online Via PowerShell)
로컬 세션에서 Powershell(Powershell) 콘솔을 열고 다음 명령을 사용하여 로그인 자격 증명을 변수에 설정합니다.
$userCredential
이렇게 하면 나중에 다른 스크립트로 더 쉽게 작업할 수 있습니다.
$userCredential = get-Credential
Exchange Online 관리를 위한 사용자 이름과 암호를 입력할 수 있는 창이 열립니다 .
다음으로 세션에서 실제로 작업을 수행할 수 있도록 실행 정책 수준을 설정합니다. 이를 통해 서명되지 않은 명령을 실행할 수 있습니다. 그러나 PowerShell 스크립트 서명에 대한 모범 사례(best practices for signing PowerShell scripts) 도 배우고 싶을 수 있습니다.
set-ExecutionPolicy Unrestricted
메시지가 표시되면 예에 대해 Y 를 누릅니다.
이제 로컬 컴퓨터와 Exchange Online(Exchange Online) 간의 연결을 여는 데 사용할 $session 변수를 만듭니다 .
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $userCredential -Authentication Basic -AllowRedirection
Powershell-liveid 는 Office 사이트의 ID입니다. 일반적으로 이것은 회사 이름의 일부 변형입니다.
다음 명령을 사용하여 Exchange Online 에서 (Exchange Online)PoSh 세션 을 엽니다 .
import-PSSession $Session -DisableNameChecking
이제 우리는 자신의 컴퓨터에 앉아 있어도 Exchange Online 에서 직접 PowerShell 로 작업하고 있습니다.(PowerShell)
PowerShell로 삭제된 사서함 복원(Restore a Deleted Mailbox With PowerShell)
다음 부분은 매우 쉽습니다. 연결하는 데 훨씬 더 오래 걸릴 것입니다.
아래 표시된 cmdlet을 실행하기만 하면 됩니다.
undo-SoftDeletedMailbox [email protected] -WindowsLiveID [email protected] -Password (ConvertTo-SecureString -String 'newpassword' -AsPlainText -Force)
[email protected] 의 두 인스턴스 를 복원하려는 사서함 의 적절한 사서함 이름과 Windows LiveID 로 변경합니다. (Windows LiveID)동일하지 않을 수 있습니다.
또한 사서함에 대한 새 암호를 설정해야 합니다. 스크립트의 newpassword(newpassword) 를 원하는 비밀번호로 변경 하십시오. 이를 사용자에게 전달하고 다음에 로그인할 때 비밀번호를 변경하도록 요청해야 합니다.
마지막으로 다음 cmdlet을 사용하여 이것이 제대로 작동하는지 확인합니다.
get-Mailbox [email protected]
복원된 경우 cmdlet은 복원된 사서함에 대한 정보를 반환합니다. 오류가 반환되면 명령을 다시 실행하여 올바른 사서함과 Windows LiveID 가 사용되고 있는지 확인하십시오.
그래도 작동하지 않으면 시스템 백업에서 사서함을 복원해야 합니다. 시스템 백업에는 여러 유형이 있으므로 현재 수행 중인 작업의 범위를 벗어납니다.
완료되면 PoSh 세션을 닫아야 합니다. 실행 중인 PoSh(PoSh) 세션 의 수 는 제한되어 있습니다. 열린 상태로 두면 해당 세션 중 하나가 사용됩니다. 닫지 않으면 다른 세션을 시작하기 전에 세션 시간이 초과될 때까지 기다려야 합니다.
remove-PSSession $Session
그게 다야 다시 발생하는 경우 쉽게 사용할 수 있도록 이를 PowerShell 모듈(PowerShell Module) 에 스크립팅할 수도 있습니다 .
Exchange 2010에서 삭제된 사서함 복원(Restore a Deleted Mailbox In Exchange 2010)
Office 365 또는 하이브리드 환경 에서는 작동하지 않습니다 . Exchange 2010 온-프레미스 에서만 작동합니다 .
메일 서버에서 EMC( Exchange 관리 콘솔 )를 엽니다.(Exchange Management Console )
받는 사람 구성(Recipient Configuration ) > 연결이 끊긴 사서함(Disconnected Mailbox) 으로 이동합니다 . 거기에 사용자의 사서함이 표시되어야 합니다.
그렇지 않으면 사서함 데이터베이스 정리 프로세스가 아직 발생하지 않은 것입니다. 좋아요, 우리는 그것을 강제할 수 있습니다.
- 관리자로 EMS(EMS) ( Exchange 관리 셸(Exchange Management Shell ) )를 엽니다 . 여기에서 Exchange 관련 PowerShell(Exchange-specific PowerShell) 작업을 수행할 수 있습니다.
- 이제 cmdlet을 입력합니다.
Get-MailboxDatabase | Clean-MailboxDatabase
- 완료되면 EMC 로 돌아가 (EMC)Disconnected Mailbox 를 마우스 오른쪽 버튼으로 클릭 한 다음 Refresh 를 클릭합니다 .
- 이제 거기에 사서함이 표시되어야 하며 최근에 삭제된 다른 사서함과 함께 있습니다.
- EMS 로 돌아가서 다음 cmdlet을 입력합니다.
Connect-Mailbox -Identity "username" -Database "Mailbox Database" -User "username"
- Username 은 사용자의 Windows 계정 이름(예: Test User ) 이고 (,)Mailbox Database 는 EMC의 Disconnected Mailbox 창에서 이름 옆(Disconnected Mailbox) 에 나열된 데이터베이스 이름입니다 .
- 연결이 끊긴 사서함(Disconnected Mailbox) 을 새로 고치면 해당 사서함이 더 이상 표시되지 않는 것을 볼 수 있습니다. 받는 사람 구성(Recipient Configuration ) > 사서함(Mailbox ) 으로 이동 하여 사용자의 사서함이 있는지 확인합니다.
이메일 주소 및 별칭과 같은 모든 설정이 올바른지 확인하십시오. 좋아 보이면 다음에 사용자가 Outlook 을 열 때 모든 것이 있는 그대로 있을 것입니다.
사서함 복원됨(Mailbox Restored)
이것이 PowerShell 을 사용하여 (PowerShell)Exchange Online 및 Exchange 2010 에서 사서함을 복원 하는 방법 입니다. 하이브리드 환경이 있는 경우 조금 더 복잡하지만 수행할 수 있습니다.
이러한 다양한 cmdlet이 있다는 사실만 알면 버전이나 구성에 관계없이 Exchange 를 사용할 수 있는 좋은 위치에 놓이게 됩니다.(Exchange)
How to Restore a Deleted Mailbox with PowerShell
No matter how you accidentally deleted a person’s mailbox in Exchange, you can probably restore it using PowerShell (PoSh). The key is doing it as soon as you realize the mailbox has been deleted.
It’s a heart-jumped-into-my-throat moment when we realize we’ve accidentally done this. If you’ve only deleted a few email messages, we can show you how to recover deleted emails in Office 365 too.
Before we begin, note that this is meant for restoring deleted mailboxes in Exchange Online for the Office 365 environment and Exchange 2010. We’re also assuming that you have the administrative rights to use the methods described and have done some basic PowerShell scripting.
What Happens When a Mailbox Is Deleted?
The mailbox gets moved to either the Azure Active Directory (AD) recycle bin in Exchange Online or the Disconnected Mailboxes directory in Exchange 2010.
It may sit there for up to 30 days depending on the retention policies that are in place. That gives us a grace period to recognize our mistake and recover from it.
Restore a Deleted Mailbox In Exchange Online
Connect To Exchange Online Via PowerShell
In your local session, open the Powershell console and use the following command to set your login credentials into the variable.
$userCredential
This makes it easier to work with other scripts later on.
$userCredential = get-Credential
A window will open where you can enter your username and password for managing Exchange Online.
Next, set the execution policy level so that we can actually do things in our session. This allows us to run our unsigned commands. But you may want to learn best practices for signing PowerShell scripts too.
set-ExecutionPolicy Unrestricted
When prompted, press Y for Yes.
Now we’ll create the variable $session to be used to open a connection between the local computer and Exchange Online.
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $userCredential -Authentication Basic -AllowRedirection
Powershell-liveid is the id of your Office site. Usually this is some variation of your company’s name.
Use the following command to open a PoSh session on Exchange Online:
import-PSSession $Session -DisableNameChecking
Now we’re working with PowerShell directly in Exchange Online, even though we’re sitting at our own computer.
Restore a Deleted Mailbox With PowerShell
The next part is super easy. Making the connection will have taken us far longer.
All we have to do is run the cmdlet shown below:
undo-SoftDeletedMailbox [email protected] -WindowsLiveID [email protected] -Password (ConvertTo-SecureString -String 'newpassword' -AsPlainText -Force)
Change both instances of [email protected] to the appropriate mailbox name and Windows LiveID of the mailbox we want to restore. Note that they may not be the same.
We also have to set a new password for the mailbox. Change newpassword in the script to the password of your choice. You’ll need to relay that to the user and ask them to change their password the next time they log in.
Finally, use the next cmdlet to check to make sure that this worked.
get-Mailbox [email protected]
If it has been restored, the cmdlet will return information about the restored mailbox. If it returns an error, go through the commands again and ensure that the correct mailbox and Windows LiveID are being used.
If that still doesn’t work, then we’ll need to restore the mailbox from a system backup. There’s many types of system backups, so that’s beyond the scope of what we’re doing today.
When we’re done, we must close the PoSh session. The number of PoSh sessions we have running is limited. Leaving it open uses one of those sessions. Unless we close it, we’ll have to wait for the session to time-out before we can start another one.
remove-PSSession $Session
That’s it. You may even want to script this into a PowerShell Module for ease of use if it happens again.
Restore a Deleted Mailbox In Exchange 2010
This doesn’t work for Office 365 or hybrid environments. It only works for Exchange 2010 on-premises.
On the mail server, open the Exchange Management Console (EMC).
Navigate to Recipient Configuration > Disconnected Mailbox. We should see the user’s mailbox there.
If we don’t, then the mailbox database cleaning process hasn’t happened yet. That’s OK, we can force it.
- Open the Exchange Management Shell (EMS) as administrator. This is where we can do Exchange-specific PowerShell work.
- Now we enter the cmdlet:
Get-MailboxDatabase | Clean-MailboxDatabase
- Once that is done, let’s go back to the EMC and right-click on Disconnected Mailbox, then click on Refresh.
- We should see the mailbox there now, and it is, along with another one that was deleted recently.
- Go back to EMS and enter the cmdlet:
Connect-Mailbox -Identity "username" -Database "Mailbox Database" -User "username"
- Username is the person’s Windows account name (like Test User), and Mailbox Database is the name of the database listed beside their name in the Disconnected Mailbox window in EMC.
- Refresh Disconnected Mailbox and you should see that their mailbox is no longer displayed there. Navigate to Recipient Configuration > Mailbox and ensure the user’s mailbox is there.
Check it to make sure all the settings are correct, like e-mail address and alias. If it looks good, the next time the user opens their Outlook, everything will be there just as it was.
Mailbox Restored
That’s how to use PowerShell to restore mailboxes in Exchange Online and Exchange 2010. If you’ve got a hybrid environment, it’s a bit more complicated but it can be done.
Just knowing that these different cmdlets exists puts you in a good position to work with Exchange, no matter what version or configuration.