Archive

Countdown

    Keine Ereignisse vorhanden

Exchange 2007: Selektiver Umzug von Postfächern per Powershell Script

Zusammenfassung: Nachfolgend geht es um das Verteilen von Postfächern aus einer Quelldatenbank auf verschiedene Zieldatenbanken, abhängig von bestimmten Parametern.

Eine interessante Aufgabe war zu lösen: In einer Exchange 2007 Umgebung sollte dem Wildwuchs bei der Postfachgröße endlich Einhalt geboten werden. Die existierenden Postfachdatenbanken hatten keine Limits, dementsprechend gab es Kandidaten, bei denen die Postfachgröße im Laufe der Zeit riesige Ausmaße annahm (bis zu 11 GB).

Beschlossen wurden 4 Größenkategorien, entsprechend wurden neue Postfachdatenbanken angelegt. Jetzt sollten die Postfächer anhand der jeweiligen aktuellen Größe in die neuen Datenbanken umgezogen werden. Dank Powershell eine lösbare Aufgabe. Das folgende Script ordnet alle Postfächer einer Datenbank der entsprechenden Größenkategorie zu, aktiviert die Option “Standardwerte für Postfachdatenbank verwenden” unter Speicherkontingente und zieht die Mailbox schließlich mit move-mailbox in die Zieldatenbank um. Für einen Probelauf des Scripts ohne Umzug der Mailboxen, kann der Parameter -ValidateOnly an den move-mailbox Befehl angehängt werden.

function get-moves {
 
#$databases = Get-Mailboxdatabase
$AllUsers = @()
$AllUsersEmail = @()
$Kat1 = @()
$Kat2 = @()
$Kat3 = @()
$Kat4 = @()
$ckat1 = 0
$ckat2 = 0
$ckat3 = 0
$ckat4 = 0
 
#foreach ($database in $databases)
#{
$AllUsers += Get-Mailbox -Database Servername\Databasename -Resultsize Unlimited |Get-MailboxStatistics 
 
|select database,displayName,itemcount, TotalItemSize, identity
 
foreach ($user in $AllUsers)
{
 
set-mailbox -Identity $user.Identity -UseDatabaseQuotaDefaults $true
if ($user.TotalItemSize.Value.ToMB() -lt 500) {
$Kat1 += $user.Identity
$ckat1 ++
}
 
if ($user.TotalItemSize.Value.ToMB() -gt 500) {
if ($user.TotalItemSize.Value.ToMB() -lt 1000) {
$Kat2 += $user.Identity
$ckat2 ++
}
}
 
if ($user.TotalItemSize.Value.ToMB() -gt 1000) {
if ($user.TotalItemSize.Value.ToMB() -lt 2000) {
$Kat3 += $user.Identity
$ckat3 ++
}
}
 
if ($user.TotalItemSize.Value.ToMB() -gt 2000) {
$Kat4 += $user.Identity
$ckat4 ++
}
 
$obj = new-object psObject
 
$obj |Add-Member -MemberType noteproperty -Name "Datenbank" -Value $user.database
$obj |Add-Member -MemberType noteproperty -Name "Display Name" -Value $user.DisplayName
$obj |Add-Member -MemberType noteproperty -Name "Item Count" -Value $user.ItemCount
$obj |Add-Member -MemberType noteproperty -Name "Total Item Size" -Value $user.totalitemsize.value.ToMB()
$obj |Add-Member -MemberType noteproperty -Name "Identity" -Value $user.Identity
 
$AllUsersEmail += $obj
}
$AllUsersEmail |Export-Csv c:\moves.csv -NoTypeInformation -encoding default
Write-Host $ckat1
Write-Host $ckat2
write-Host $ckat3
write-Host $ckat4
 
$Kat4 | move-mailbox -targetdatabase "Servername\Databasename" -confirm:$false -maxthreads 4
$Kat3 | move-mailbox -targetdatabase "Servername\Databasename" -confirm:$false -maxthreads 4
$Kat2 | move-mailbox -targetdatabase "Servername\Databasename" -confirm:$false -maxthreads 4
$Kat1 | move-mailbox -targetdatabase "Servername\Databasename" -confirm:$false -maxthreads 4
 
}

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Comment Spam Protection by WP-SpamFree