In Exchange Umgebungen mit DAG und mehreren Datenbankkopien, sollten die Datenbanken normalerweise gleichmäßig über die Datenbank Server verteilt werden. Allerdings kann sich diese Situation ändern, wenn ein Failover eingetreten ist, oder die Datenbanken zu Wartungszwecken auf anderen Servern aktiv geschaltet wurden. Irgendwann hat man dann ggf. die Situation das alle Datenbanken auf einem Server aktiv sind und die anderen Server sich langweilen.
Abhilfe schafft dieses kleine Script:
#www.FrankysWeb.de #Frank Zöchling #--------------------------------- $From = "DBMover@frankysweb.de" $To = "frank@frankysweb.de" $SMTPServer = "smtp.frankysweb.de" #--------------------------------- $exsnapin = Add-PSSnapin *exchange* $Databases = Get-MailboxDatabase $DBStatus = @() [string]$mail = "<b>Der MailboxServer für folgende Datenbanken wurde geändert</b> " foreach ($database in $databases) { $DBName = $database.Name $DBPreferedServer = ($database.ActivationPreference | where {$_.value -eq "1"}).key.name $DBCurrentServer = ($database.Server).name if ($DBPreferedServer -ne $DBCurrentServer) { write-host "Aktiver Mailbox Server für Datenbank $DBName wird auf Server $DBPreferedServer geändert (war aktiv auf $DBCurrentServer)" -ForegroundColor yellow $MoveDB = Move-ActiveMailboxDatabase $DBName -ActivateOnServer $DBPreferedServer $DBStatus += new-object PSObject -property @{Database="$DBName";DBPreferedServer="$DBPreferedServer";DBCurrentServer="$DBCurrentServer";DatabaseMove="yes"} } else { write-host "Datenbank $DBName ist aktiv auf dem vorgesehenen Server" -ForegroundColor green $DBStatus += new-object PSObject -property @{Database="$DBName";DBPreferedServer="$DBPreferedServer";DBCurrentServer="$DBCurrentServer";DatabaseMove="no"} } } if ($DBStatus.databasemove -contains "yes") { $DBmoved = $DBStatus | where {$_.Databasemove -match "yes"} [string]$mail += $DBmoved | ConvertTo-Html Send-MailMessage -From $from -To $to -SmtpServer $SMTPServer -Subject "Mailbox Datenbanken neu verteilt" -Body $mail -BodyAsHTML -Encoding UTF8 }
Das Script verteilt alle Datenbanken auf die entsprechenden Server. Das Script kann manuell oder per Taskplaner ausgeführt werden. Sobald die Datenbanken gemäß ihrer Präferenz verteilt wurden, wird eine Mail zur Benachrichtigung verschickt.
Im oberen Teil des Scripts müssen nur Empfänger, Absender und SMTP Server angegeben werden. Per Taskplaner kann diese Einstellung für das Ausführen des Scripts zu einem gewählten Zeitraum genutzt werden: