Script de distribution de boîtes aux lettres Exchange Server

Bonjour, aujourd'hui je vais partager en détail le script que j'ai préparé en réponse à un besoin.

Le script vérifie les boîtes aux lettres des utilisateurs au sein de l'UO que vous avez indiquée et distribue les boîtes aux lettres au format CSV de 250 Go. L'adresse e-mail et de quelle base de données il s'agira sont indiquées dans le rapport CSV. Les noms de base de données sont DB01, DB02, DB03 par exemple, et lorsque vous effectuez le processus de distribution, vous pouvez définir la taille de la base de données sur 250 Go.

Si nous voulons examiner les grandes lignes du script, nous pouvons le décomposer comme suit.

Il demande à l'utilisateur de saisir les informations de nom distinctif (DN) de l'UO (unité organisationnelle). C'est DN, PowerShell donné par Get-Mailbox Il est utilisé dans la commande.

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

Toutes les boîtes aux lettres de l'unité d'organisation sont répertoriées. Ce, Get-Mailbox Cela se fait avec la commande. -OrganizationalUnit Le paramètre renvoie les boîtes aux lettres sous une unité d’organisation spécifique. -ResultSize Unlimited Le paramètre garantit que toutes les boîtes aux lettres sont récupérées.

$mailboxes = Get-Mailbox -OrganizationalUnit $ouDN -ResultSize Unlimited | Get-MailboxStatistics | Select DisplayName, TotalItemSize, Database
  1. Le script démarre ensuite une boucle dans laquelle la taille de chaque boîte aux lettres est calculée et ajoutée à la base de données existante jusqu'à ce qu'elle atteigne la limite de 250 Go.
  2. Lorsque la limite de 250 Go est dépassée, une nouvelle base de données est créée et la boîte aux lettres suivante est ajoutée à la nouvelle base de données. Ce processus est répété jusqu'à ce que toutes les boîtes aux lettres soient attribuées sans dépasser la limite.
  3. Ces données sont écrites dans un fichier CSV contenant le nom de chaque boîte aux lettres, la base de données à laquelle elle est attribuée et la taille de la boîte aux lettres.
$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

Articles similaires – Script de distribution de boîtes aux lettres Exchange Server

Commenter