Website-Icon Frankys Web

Exchange 2010/2013: Datenbanken per Script auf die entsprechenden Server verteilen

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:

Die mobile Version verlassen