La commande “Switchover server” permet de basculer les banques actives
vers un serveur de destination.
Ayant rencontré à de maintes reprises des soucis lors de l’utilisation de cet utilitaire
j’ai préféré utiliser un script.
*********************************************************
######## Move database
######## Ce script permet le déplacement des banques actives d'un serveur "A" vers un serveur "B"
######## Ecrit par Pascal FEDAN
######## Le 05 Novembre 2012
######## Version 1.0
######## Modifié le
######## Version
######## Déclaration des serveurs source et cible
$sourceserver = "serveur2"
$targetserver = "serveur1"
####### Fonction d'envoi d'un message
function sendmail {
send-mailmessage -from "adm_mail@pub.ad" -to "Franck.Test@pub.ad" -subject "MoveDatabase" -body " Merci de consulter le fichier." -Attachment "C:\Temp\databasecopystatus.txt" -priority High -dno onSuccess, onFailure -smtpServer 10.10.10.10
}
####### Statut des bases avant la bascule
get-Date >> c:\Temp\databasecopystatus.txt
Write-output "########## Databasecopystatus avant le déplacement " >> c:\Temp\databasecopystatus.txt
Write-output " " >> c:\Temp\databasecopystatus.txt
get-mailboxdatabasecopystatus -Server $sourceserver >> c:\Temp\databasecopystatus.txt
Write-output " " >> c:\Temp\databasecopystatus.txt
get-mailboxdatabasecopystatus -Server $targetserver >> c:\Temp\databasecopystatus.txt
######### recherche des banques "montées" sur le serveur source
$MountedDB=get-mailboxdatabasecopystatus -Server $sourceserver | where { ($_.Status -eq "Mounted")}
######## si aucune banque "montée", sortie du script
if (!$MountedDB) { Write-Host "PAS DE BANQUE ACTIVE SUR $sourceserver"
Write-output " " >> c:\Temp\databasecopystatus.txt
Write-output "########## PAS DE BANQUE ACTIVE SUR $sourceserver " >> c:\Temp\databasecopystatus.txt
Write-output " " >> c:\Temp\databasecopystatus.txt
sendmail
exit
}
######### bascule des banques
else {
Foreach ($DB in $MountedDB)
{ Move-ActiveMailboxDatabase -Identity $DB.DatabaseName -ActivateOnServer $targetserver -MountDialOverride:None -confirm:$false >> c:\Temp\databasecopystatus.txt}
}
Start-Sleep -s 30
######### statut des banques après la bascule
Write-output " " >> c:\Temp\databasecopystatus.txt
Write-output "########## Databasecopystatus après le déplacement" >> c:\Temp\databasecopystatus.txt
Write-output " " >> c:\Temp\databasecopystatus.txt
get-mailboxdatabasecopystatus -Server $sourceserver >> c:\Temp\databasecopystatus.txt
Write-output " " >> c:\Temp\databasecopystatus.txt
get-mailboxdatabasecopystatus -Server $targetserver >> c:\Temp\databasecopystatus.txt
######## Appel de la fonction sendmail
sendmail
***********************
Ce script recherche les banques actives et les bascule sur le serveur de destination
mentionné dans la déclaration des variables.
Bien sûr, testez avant de l’utiliser en production.