Si comme moi il y'a toujours du monde dans votre entreprise de 8h à 20h, alors peut-etre mieux vaut-il utiliser une tache planifiée pour le déplacement des mailbox.
J'ai écrit là un exemple de script, celui n'est surement pas le seul possible et n'est pas forcement adapté à votre architecture mais cela peu servir de point de départ.
Ce scripts récupère la liste des utilisateurs/mailbox a déplacé et le nom de la database de destination. Attention, dans la mesure du possible utiliser un fichier au format UTF8. Ensuite, il déplace les mailbox et génère un deux fichiers de logs (1 Transcript & 1 fichier maison).
Format du fichier utilisateur :
Prenom,Nom,SamAccountName,Database
Jean,Michemuche,jmichemuche,Groupe Stockage 1\Banque 1
Contenu du script :
$ScriptName = "Move-BulkMailbox"Voici le contenu de la tache planifiée :
$ScriptVersion = "1.0"
# Fichier contenant les mailbox a déplacée et l'emplacement de destination
$UsersFile = "C:\FREESHARE\BulkMoveMailbox\users.csv"
$Date = Get-Date -format "yyyyMMdd"
# Démarrage du transcript, tout ce qui se passe sur la console est reporter dans le fichier de log
Start-Transcript -path "$Date-TS.log"
# mise en place de mes logs perso
# récupération du fichier des logs s'il existe
if(! ($Logs = Get-Item "$Date.log")){
$Logs = new-item "$Date.log" -type file -force
}
# début d'écriture dans le fichier des logs
$LogsTime = Get-Date -format "dd/MM/yyyy H:mm:ss"
add-content $Logs "$LogsTime - BEGIN [$ScriptName v$ScriptVersion]"
$LogsTime = Get-Date -format "dd/MM/yyyy H:mm:ss"
add-content $Logs "$LogsTime - Import du fichier mailbox : $UsersFile"
import-csv $UsersFile foreach {
$UserPrenom = $_.Prenom
$UserNom = $_.Nom
$UserSamAccountName = $_.SamAccountName
$UserTargetDatabase = $_.Database
$LogsTime = Get-Date -format "dd/MM/yyyy H:mm:ss"
add-content $Logs "$LogsTime - $UserSamAccountName ($UserPrenom $UserNom)."
$ThisMailbox = Get-Mailbox -identity $UserSamAccountName
if(! $?){
$LogsTime = Get-Date -format "dd/MM/yyyy H:mm:ss"
add-content $Logs "$LogsTime - ERROR :: $UserSamAccountName ($UserPrenom $UserNom) does not exist."
}else{
$UserActualDatabase = $ThisMailbox.Database
add-content $Logs "$LogsTime - Déplacement de la boite mail de $UserActualDatabase vers $UserTargetDatabase"
move-mailbox -identity $UserSamAccountName -TargetDatabase "$UserTargetDatabase" -BadItemLimit 0 -confirm:$false
if(! $?){
$LogsTime = Get-Date -format "dd/MM/yyyy H:mm:ss"
add-content $Logs "$LogsTime - FAILED"
}else{
$LogsTime = Get-Date -format "dd/MM/yyyy H:mm:ss"
add-content $Logs "$LogsTime - SUSSECED"
}
}
}
$LogsTime = Get-Date -format "dd/MM/yyyy H:mm:ss"
add-content $Logs "$LogsTime - END"
Stop-Transcript
powershell.exe -PSConsoleFile "C:\Exchange2007\Bin\exshell.psc1" -command ".'C:\FREESHARE\BulkMoveMailbox\Move-bulkmailbox.ps1'"
0 commentaires:
Enregistrer un commentaire