Exchangeでユーザーのメールボックスを誤って削除した場合でも、 PowerShell(PoSh )を使用して復元できる可能性があります。重要なのは、メールボックスが削除されたことに気づいたらすぐにそれを行うことです。
私たちが誤ってこれを行ったことに気付いたとき、それは私の喉に飛び込んだ瞬間です。いくつかの電子メールメッセージを削除しただけの場合は、Office365で削除された電子メールを復元する方法(how to recover deleted emails in Office 365)も紹介できます。
始める前に、これはOffice365環境およびExchange2010の(Exchange 2010)ExchangeOnlineで削除されたメールボックスを復元するためのものであることに注意してください。また、説明されているメソッドを使用するための管理者権限があり、いくつかの基本的なPowerShellスクリプト(basic PowerShell scripting)を実行していることを前提としています。
メールボックスが削除されるとどうなりますか?(What Happens When a Mailbox Is Deleted?)
メールボックスは、 ExchangeOnlineのAzureActive (Exchange Online)Directory(Azure Active Directory )(AD)ごみ箱またはExchange2010の切断されたメールボックス(Disconnected Mailboxes )ディレクトリのいずれかに移動されます。
実施されている保持ポリシーによっては、最大30日間そこに留まる場合があります。それは私たちに私たちの過ちを認識し、それから回復するための猶予期間を与えます。
ExchangeOnlineで削除されたメールボックスを復元する(Restore a Deleted Mailbox In Exchange Online)
PowerShellを介してExchangeOnlineに接続する(Connect To Exchange Online Via PowerShell)
ローカルセッションで、Powershellコンソールを開き、次のコマンドを使用してログイン資格情報を変数に設定します。
$userCredential
これにより、後で他のスクリプトを簡単に操作できるようになります。
$userCredential = get-Credential
ExchangeOnlineを管理するためのユーザー名とパスワードを入力できるウィンドウが開きます。
次に、セッションで実際に実行できるように、実行ポリシーレベルを設定します。これにより、署名されていないコマンドを実行できます。ただし、PowerShellスクリプトに署名するためのベストプラクティス(best practices for signing PowerShell scripts)も学習することをお勧めします。
set-ExecutionPolicy Unrestricted
プロンプトが表示されたら、 Y(Y)を押して[はい]を選択します。
次に、ローカルコンピューターとExchangeOnline(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です。通常、これは会社名のバリエーションです。
次のコマンドを使用して、ExchangeOnlineで(Exchange Online)PoShセッションを開きます。
import-PSSession $Session -DisableNameChecking
現在、自分のコンピューターの前に座っていても、ExchangeOnlineで(Exchange Online)PowerShellを直接操作しています。
PowerShellを使用して削除されたメールボックスを復元する(Restore a Deleted Mailbox With PowerShell)
次の部分はとても簡単です。接続するのにはるかに時間がかかります。
以下に示すコマンドレットを実行するだけです。
undo-SoftDeletedMailbox [email protected] -WindowsLiveID [email protected] -Password (ConvertTo-SecureString -String 'newpassword' -AsPlainText -Force)
[email protected]の両方のインスタンスを、復元するメールボックスの適切なメールボックス名とWindowsLiveIDに変更(Windows LiveID)します。それらは同じではない可能性があることに注意してください。
また、メールボックスに新しいパスワードを設定する必要があります。スクリプトのnewpassword(newpassword)を選択したパスワードに変更します。これをユーザーに伝え、次にログインするときにパスワードを変更するようにユーザーに依頼する必要があります。
最後に、次のコマンドレットを使用して、これが機能することを確認します。
get-Mailbox [email protected]
復元されている場合、コマンドレットは復元されたメールボックスに関する情報を返します。エラーが返された場合は、コマンドをもう一度実行して、正しいメールボックスとWindowsLiveIDが使用されていることを確認してください。
それでも機能しない場合は、システムバックアップからメールボックスを復元する必要があります。システムバックアップには多くの種類があるため、現在行っている範囲を超えています。
完了したら、 PoSh(PoSh)セッションを閉じる必要があります。実行しているPoSh(PoSh)セッションの数は限られています。開いたままにしておくと、それらのセッションの1つが使用されます。それを閉じない限り、別のセッションを開始する前に、セッションがタイムアウトするのを待つ必要があります。
remove-PSSession $Session
それでおしまい。再度発生した場合に使いやすくするために、これをPowerShellモジュール(PowerShell Module)にスクリプト化することもできます。
Exchange2010で削除されたメールボックスを復元する(Restore a Deleted Mailbox In Exchange 2010)
これは、 Office365(Office 365)またはハイブリッド環境では機能しません。オンプレミス のExchange2010でのみ機能します。
メールサーバーで、Exchange管理コンソール(Exchange Management Console )(EMC)を開きます。
[受信者の構成](Recipient Configuration ) >[切断されたメールボックス](Disconnected Mailbox)に移動します。そこにユーザーのメールボックスが表示されます。
そうでない場合、メールボックスデータベースのクリーニングプロセスはまだ実行されていません。それは大丈夫です、私たちはそれを強制することができます。
- 管理者としてExchange管理シェル(Exchange Management Shell )(EMS)を開きます。ここで、 Exchange固有のPowerShell(Exchange-specific PowerShell)作業を実行できます。
- 次に、コマンドレットを入力します。
Get-MailboxDatabase | Clean-MailboxDatabase
- それが完了したら、EMCに戻り、[(EMC)切断されたメールボックス(Disconnected Mailbox)]を右クリックして、[更新(Refresh)]をクリックします。
- そこにメールボックスが表示されるはずです。これは、最近削除された別のメールボックスと一緒です。
Connect-Mailbox -Identity "username" -Database "Mailbox Database" -User "username"
- ユーザー(Username)名は、そのユーザーのWindowsアカウント名(テストユーザー(Test User)など)で(,)あり、メールボックスデータベース(Mailbox Database)は、 EMC の[切断されたメールボックス(Disconnected Mailbox)]ウィンドウで名前の横に表示されるデータベースの名前です。
- 切断されたメールボックス(Disconnected Mailbox)を更新すると、メールボックスがそこに表示されなくなっていることがわかります。[受信者の構成](Recipient Configuration ) >[メールボックス](Mailbox )に移動し、ユーザーのメールボックスがそこにあることを確認します。
メールアドレスやエイリアスなど、すべての設定が正しいことを確認してください。見栄えが良ければ、次にユーザーがOutlookを開いたときに、すべてがそのまま表示されます。
メールボックスが復元されました(Mailbox Restored)
これが、PowerShellを使用して(PowerShell)ExchangeOnlineおよびExchange2010でメールボックスを復元する方法です。ハイブリッド環境を使用している場合は、もう少し複雑ですが、実行できます。
これらの異なるコマンドレットが存在することを知っているだけで、バージョンや構成に関係なく、 Exchangeを操作するのに適した立場になります。(Exchange)
How to Restore a Deleted Mailbox with PowerShell
No matter how you accidentally deleted a pеrson’s mailbox in Exchange, уou can probаbly restore it using PowerShell (PoSh). The key is doing it as soon as you realize the mаilbox 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.