> Tech > Script de restauration Exchange

Script de restauration Exchange

Tech - Par iTPro - Publié le 20 juin 2011
email


Le script suivant permet de restaurer une boîte aux lettres pour un utilisateur à partir d’une sauvegarde réalisée. Il mérite toutefois quelques explications complémentaires. Le script de restauration n’utilise pas comme destination la boîte aux lettres de l’utilisateur, mais une boîte de restauration (par exemple : recovery@societe.com)

Script de restauration Exchange

que vous devrez créer dans la console d’administration MOAC. La raison est que la restauration de l’image remet l’état de la boîte aux lettres telle qu’elle était au moment de sa sauvegarde et qu’il n’est pas possible de récupérer uniquement le dossier ou le message que vous souhaitez restaurer.

#
# Microsoft BPOS Script
#
# NAME: Restore-MSOnlineUserMailbox.ps1
#
# AUTHOR: Arnaud Alcabez
# DATE : 20/07/2010
#
# COMMENT: Use this script to restore a backup user mailbox into a temporary mailbox
#
#
#
==============================================================================================
cls
# Enlarge the console to display location results
mode con cols=180
# Load the Exchange Transporter Cmdlets if there are not loaded
$ExCmd = $False
$Modules = Get-PSSnapIn
ForEach ($_.Name in $Modules) {if ($_.Name -eq "Microsoft.Exchange.Transporter") { $ExCmd = $True
}}
If ($ExCmd -eq $False) {Add-PSSnapin Microsoft.Exchange.Transporter}
If ($ExCmd -eq $False) {Write-Host "Note: Exchange Online Cmdlets loaded…"}
Write-Host

Write-Host '┌─────────────────────────────────────────────────┐'
-ForegroundColor white -BackgroundColor darkred
Write-Host '│ │' -ForegroundColor white -BackgroundColor darkred
Write-Host '│ Enter your Exchange Online Admin ID account │' -ForegroundColor white
-BackgroundColor darkred
Write-Host '│ │' -ForegroundColor white -BackgroundColor darkred
Write-Host '└─────────────────────────────────────────────────┘'
-ForegroundColor white -BackgroundColor darkred
Write-Host

# Get the login ID for the BPOS admin account
$Credlogin = Read-Host 'Administrator Login ID'
$Credpwd = Read-Host 'Password' -AsSecureString
Write-Host

# Form the BPOS encrypted credential information and store it in a variable to be passed to upcoming commands
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Credlogin, $Credpwd
Write-Host

Write-Host '┌─────────────────────────────────────────────────┐'
-ForegroundColor white -BackgroundColor darkblue
Write-Host '│ │' -ForegroundColor white -BackgroundColor darkblue
Write-Host '│ Restore service for mailbox users on the │' -ForegroundColor white -BackgroundColor
darkblue
Write-Host '│ EMEA Datacenter for Microsoft Online Services │' -ForegroundColor white
-BackgroundColor darkblue
Write-Host '│ │' -ForegroundColor white -BackgroundColor darkblue
Write-Host '└─────────────────────────────────────────────────┘'
-ForegroundColor white -BackgroundColor darkblue
Write-Host

#Enter the usermailbox or (none) to check all mailboxes
$BkpFile = Read-Host 'Enter the path and the backuped file name to restore'
Write-Host
$RstMbx = Read-Host 'Enter the restore mailbox name (FQDN) – The restored mailbox should be active'
$RstPwd = Read-Host 'Enter a new password for the restore mailbox'
$BkpUser = Read-Host 'Enter the user name (FQDN) to give access to the restored mailbox'
Write-Host
Write-Host 'INFO: Username and Backup File verification…'
Write-Host

#Verify Backup File Path and user address
$FileExists = Test-Path $BkpFile
if ($FileExists -eq $false) {
Write-Host 'WARNING: The backup file' $Bkpfile 'doesn''t exist' -ForegroundColor white
-BackgroundColor darkred
Write-Host
Break
}
Else {
Write-Host 'INFO: The backup file' $Bkpfile 'is checked'
Write-Host
}

$UsrExist = $False
$Colusers = Get-MSOnlineUser -Credential $cred -Enabled -ResultSize 10000
ForEach($User in $Colusers){
If ($User.Identity -eq $BkpUser) {$UsrExist = $True}
}
If ($UsrExist -eq $False) {
Write-Host 'WARNING: The username doesn''t exist' -ForegroundColor white -BackgroundColor darkred
Write-Host
Break
}
Else {
Write-Host 'INFO: The username' $BkpUser 'is checked'
Write-Host
}

$RstExist = $False
$Colusers = Get-MSOnlineUser -Credential $cred -Enabled -ResultSize 10000
ForEach($User in $Colusers){
If ($User.Identity -eq $RstMbx) {$RstExist = $True}
}
If ($RstExist -eq $False) {
Write-Host 'WARNING: The restore mailbox doesn''t exist or is inactive' -ForegroundColor white
-BackgroundColor darkred
Write-Host
Break
}
Else {
Write-Host 'INFO: The restore mailbox' $RstMbx 'is checked'
Write-Host
}

#Create Give Access Permission on the Restore Mailbox
Add-MSOnlineMailPermission -Identity $RstMbx -TrustedUser $BkpUser –GrantFullAccess:$True
-Credential $Cred | Out-File ".\ChangePassword.log"
Set-MSOnlineUserPassword -Quiet -Identity $RstMbx -Password $RstPwd
-ChangePasswordOnNextLogon:$false -Credential $cred | Out-File ".\ChangePassword.log"
Remove-Item '.\ChangePassword.log'
Write-Host
Write-Host 'INFO: The restore mailbox' $RstMbx 'is now enabled for the user' $BkpUser
Write-Host

Read-Host 'INFO: Appuyez sur [Entrée] pour démarrer la restauration de la boîte aux lettres'
Import-TransporterBinary -Quiet -Sourcefilename $BkpFile | Add-XsExchangeOnlineItem -identity
$RstMbx -Credential $Cred

#Paramètres du serveur SMTP
$SMTPServer = "smtp.societe.com"
$SMTPCred = "admin@societe.com"
$SMTPPwd = "Password"

$MailFrom = "admin@societe.com"
$Subject = 'MESSAGE: Votre boîte de restauration est disponible…'
$Body = 'Pour accéder à votre boîte d''archives, veuillez quitter Outlook. Ouvrez votre profil de
messagerie ' + $BkpUser + ' (Panneau de configuration / Courrier), sélectionnez votre profil Microsoft Online Services, cliquez sur Modifier et indiquez dans l''onglet Avancé / Ouvrir ces boîtes aux lettres supplémentaires / Ajouter / ' + $RstMbx + '. Ouvrez à nouveau Outlook et sélectionnez les éléments à récupérer de la boîte de restauration vers votre boîte aux lettres de messagerie en faisant glisser les éléments entre les deux boîtes.'
$mail = new-object Net.Mail.MailMessage
$mail.From = new-object Net.Mail.MailAddress($MailFrom)
$mail.To.Add($BkpUser)
$mail.Subject = $Subject
$mail.Body = $Body
$smtp = new-object Net.Mail.SmtpClient($SMTPserver)
$smtp.Credentials = new-object Net.NetworkCredential($SMTPCred,$SMTPPwd)
$smtp.Send($mail)

Write-Host 'INFO: La restauration est terminée. Un message a été adressé à l''utilisateur' $BkpUser 'pour l''informer de sa disponibilité.'
Write-Host

Le script de restauration utilise donc une boîte aux lettres spécifique, puis donne les droits à l’utilisateur d’ouvrir cette boîte et enfin, lui envoie un message pour lui expliquer comment accéder à sa boîte de recouvrement. Afin de lui envoyer un message, vous devrez adapter les arguments indiqués en rouge de manière à ce qu’ils s’appliquent à votre environnement. Il s’agit des informations correspondant à l’emplacement du service SMTP et des informations d’authentification vous permettant d’envoyer un message. La dernière valeur $MailFrom contient l’identité du champ De: du message qui sera envoyé à l’utilisateur.

Téléchargez gratuitement cette ressource

Comment sécuriser la Digital Workplace ?

Comment sécuriser la Digital Workplace ?

Avec le recours généralisé au télétravail, les entreprises ont ouvert davantage leur SI. En dépit des précautions prises, elles ont mécaniquement élargi leur surface d’exposition aux risques. Découvrez 5 axes à ne pas négliger dans ce Top 5 Sécurité du Télétravail.

Tech - Par iTPro - Publié le 20 juin 2011