Exchange Server-Postfachverteilungsskript

Hallo, heute werde ich das Skript, das ich als Reaktion auf einen Bedarf erstellt habe, im Detail teilen.

Das Skript prüft die Postfächer der Benutzer innerhalb der von Ihnen angegebenen OU und verteilt die Postfächer im CSV-Format von 250 GB. Die E-Mail-Adresse und die Datenbank, um die es sich handelt, werden im CSV-Bericht aufgeführt. DB-Namen sind beispielsweise DB01, DB02, DB03, und wenn Sie den Verteilungsprozess durchführen, können Sie die DB-Größe auf 250 GB festlegen.

Wenn wir den Grundriss des Skripts untersuchen möchten, können wir ihn wie folgt aufschlüsseln.

Der Benutzer wird aufgefordert, die Informationen zum Distinguished Name (DN) der OU (Organisationseinheit) einzugeben. Das ist DN, Powershell gegeben von Get-Mailbox Es wird im Befehl verwendet.

$ouDN = Read-Host "Please enter the distinguished name (DN) of the OU"

Alle Postfächer in der Organisationseinheit werden aufgelistet. Das, Get-Mailbox Dies geschieht mit dem Befehl. -OrganizationalUnit Der Parameter gibt Postfächer unter einer bestimmten Organisationseinheit zurück. -ResultSize Unlimited Der Parameter stellt sicher, dass alle Postfächer abgeholt werden.

$mailboxes = Get-Mailbox -OrganizationalUnit $ouDN -ResultSize Unlimited | Get-MailboxStatistics | Select DisplayName, TotalItemSize, Database
  1. Das Skript startet dann eine Schleife, in der die Größe jedes Postfachs berechnet und zur vorhandenen Datenbank hinzugefügt wird, bis die Grenze von 250 GB erreicht ist.
  2. Wenn die Grenze von 250 GB überschritten wird, wird eine neue Datenbank erstellt und das nächste Postfach zur neuen Datenbank hinzugefügt. Dieser Vorgang wird wiederholt, bis alle Postfächer zugewiesen sind, ohne dass das Limit überschritten wird.
  3. Diese Daten werden in eine CSV-Datei geschrieben, die den Namen jedes Postfachs, die Datenbank, der es zugewiesen ist, und die Größe des Postfachs enthält.
$newDbs | Export-Csv -Path "new_dbs.csv" -NoTypeInformation -Encoding UTF8
<#
=============================================================================================
Name = Cengiz YILMAZ
Date = 1.03.2023
www.cengizyilmaz.net
www.cozumpark.com/author/cengizyilmaz
============================================================================================
#>
# Prompt for DN of the OU
$ouDN = Read-Host "Please enter the distinguished name (DN) of the OU"
# Get all mailboxes in the OU
$mailboxes = Get-Mailbox -OrganizationalUnit $ouDN -ResultSize Unlimited | Get-MailboxStatistics | Select DisplayName, TotalItemSize, Database
$newDbs = @()
$dbSize = 0
$dbCount = 1
foreach ($mailbox in $mailboxes) {
    $mailboxSize = $mailbox.TotalItemSize.Value.ToGB()
    if (($dbSize + $mailboxSize) -le 250) {
        # add to current DB
        $newDbs += New-Object PSObject -Property @{
            'Mailbox' = $mailbox.DisplayName
            'DB' = "DB$dbCount"
            'SizeInGB' = $mailboxSize
        }
        $dbSize += $mailboxSize
    } else {
        # create a new DB
        $dbCount++
        $dbSize = $mailboxSize
        $newDbs += New-Object PSObject -Property @{
            'Mailbox' = $mailbox.DisplayName
            'DB' = "DB$dbCount"
            'SizeInGB' = $mailboxSize
        }
    }
}
# Export to CSV format with UTF8 encoding
$newDbs | Export-Csv -Path "new_dbs.csv" -NoTypeInformation -Encoding UTF8

Ähnliche Artikel – Exchange Server-Postfachverteilungsskript

Kommentar