Damit können die Größen der Datenbanken ermittelt werden. Wenn ein vordefiniertes Limit erreicht ist, dann wird ein Eventlog geschrieben, dass eine weitere Datenbank nötig ist.
Function Get-DatabaseStatistics {
$Databases = Get-MailboxDatabase -Status
$Result = „“foreach($Database in $Databases) {
$DBSize = $Database.DatabaseSize
$MBCount = (Get-Mailbox -Database $Database.Name).Count
$MBAvg = $DBSize.ToBytes() / $MBCount$Result += „Server`t`t`t: “ + $Database.Server.Name+[char]13+[char]10
$Result += „Databasename`t`t: “ + $Database.Name+[char]13+[char]10
$Result += „MailboxCount`t`t: “ + $MBCount +[char]13+[char]10
$Result += „DatabaseSize (GB)`t`t: “ + „{0:n2}“ -f ($DBSize.ToBytes() / 1GB) +[char]13+[char]10
$Result += „WhiteSpace (MB)`t`t: “ + „{0:n2}“ -f ($Database.AvailableNewMailboxSpace.ToBytes() / 1MB) +[char]13+[char]10
$Result += „AverageMailboxSize (MB)`t: “ + „{0:n2}“ -f ($MBAvg / 1MB) +[char]13+[char]10
$Result += „LastFullBackup`t`t: “ + $Database.LastFullBackup +[char]13+[char]10$result += [char]13+[char]10
}
return $Result}
Function Get-DBSize($SITE){
$Faktor = 1GB # Darstellung in MB oder GB….
$MaxDBSize = (100 * $Faktor) # Maximale Größe der Datenbank in MB oder GB je nach Faktor, Default 100 xB….
$HighWaterMark = ($MaxDBSize * 0.8 / $Faktor) # Ab wann soll gewarnt werden (80% default)
$DBCounter = 0
$lNewDB=$TRUE
$Result = „“
$MaxDBSize = (100 * $Faktor)/$Faktor
#Sucht nur ZDx Datenbanken
ForEach($Database in Get-MailboxDatabase ZD* -Status|Sort-Object Name)
{ $DBCounter = $DBCounter +1
$DBSize = ($Database.DatabaseSize.ToBytes() / $Faktor)
# Passt in diese Datenbank noch eine Mailbox rein?
write-host $Database.Name
write-host $DBSize
write-host $HighWaterMark
if ($DBSize -lt $HighWaterMark)
{
$lNewDB = $False
# Wenn noch eine reinpasst, dann muss keine NewDB angelegt werden ($False)
break
# Schleife kann nun schon beendet werden
}
}
# das neue Postfach hat in keine DB reingepasst, also muss eine neue DB angelegt werden
if ($lNewDB -eq $True) {
$Help= „Alle {2} -Datenbanken sind zu mehr als {0} % belegt. Maximale Datenbankgröße {1:n2} MB. Neue {2} -Datenbank wird benötigt.“ -f $HighWaterMark, $MaxDBSize, $Site
#write-host $Help
write-eventlog -logname Application -source „MSExchangeStatistic“ -eventID 997 -entrytype Warning -message $help}
}
Function SendMail($MessageBody){$emailFrom = From@domain.de
$emailTo = Empfaenger@domain.de
$subject = „Database Statistics“
$body = $MessageBody
$smtpServer = „Mailserver.domain.de“
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)
}########################################################################################################################
$result = Get-DatabaseStatistics
write-eventlog -logname Application -source „MSExchangeStatistic“ -eventID 998 -entrytype Information -message $result
SendMail($result)Get-DBSize(„ZD“)
Get-DBSize(„VB“)exit