In diesem Artikel, Austausch ein Tool zur Automatisierung der Datenbank- und Postfachverwaltung auf Ihrem Server Powershell Wir erklären Ihnen, wie Sie das Skript verwenden. Das Skript listet alle in einer Datenbank vorhandenen Postfächer auf und verteilt die Datenbanken anhand ihrer Größe optimal.
Lassen Sie uns zunächst die Grundfunktionalität unseres Skripts und einige der darin enthaltenen Variablen untersuchen:
#Variables
$totalDbSizeGB = 0
$maxDbSizeGB = 200
$maxMailboxSizeGB = 40
$dbCounter = 1
#Start Script
$databaseName = Read-Host -Prompt 'Enter the name of the database'
Get-Mailbox -Database $databaseName | ForEach-Object {
$mailboxSizeGB = (Get-MailboxStatistics $_.Identity).TotalItemSize.Value.ToGB()
$totalDbSizeGB += $mailboxSizeGB
if($totalDbSizeGB -gt $maxDbSizeGB -or $mailboxSizeGB -gt $maxMailboxSizeGB){
$totalDbSizeGB = $mailboxSizeGB
$dbCounter++
}
[PSCustomObject]@{
"User" = $_.UserPrincipalName
"Mailbox Size (GB)" = $mailboxSizeGB
"Database" = "DB{0:D2}" -f $dbCounter
}
} | Export-Csv -Path .MailboxReport.csv -NoTypeInformation -Encoding UTF8
Lassen Sie uns detaillierte Informationen zur Funktionsweise dieses Skripts geben:
- Zunächst definieren wir einige Variablen:
$totalDbSizeGB
: Diese Variable speichert die Gesamtgröße der aktuellen Zieldatenbank in GB. Jedes Mal, wenn wir ein Postfach hinzufügen, erhöhen wir diesen Wert um die Größe des Postfachs.$maxDbSizeGB
: Diese Variable bestimmt die maximale Größe einer Datenbank in GB. In diesem Beispiel wird damit angegeben, dass eine neue Datenbank erstellt werden soll, wenn die Größe einer Datenbank 200 GB überschreitet.$maxMailboxSizeGB
: Diese Variable bestimmt die maximale Größe eines Postfachs in GB. Wenn wir in diesem Beispiel ein Postfach hinzufügen, das größer als 40 GB ist, fügen wir das Postfach in eine neue Datenbank ein.$dbCounter
: Diese Variable ist der Zähler, der beim Erstellen neuer Datenbanken verwendet wird. Jedes Mal, wenn wir eine neue Datenbank erstellen, erhöhen wir diese Nummer um eins und bilden den Namen der neuen Datenbank, indem wir „DB“ mit dieser Nummer kombinieren (z. B. „DB01“, „DB02“ usw.).
- Danach
Read-Host
Den Datenbanknamen erhalten wir vom Benutzer mit dem Befehl. Get-Mailbox
Mit dem Cmdlet rufen wir alle in einer bestimmten Datenbank vorhandenen Postfächer ab und führen für jedes einzelne die folgenden Vorgänge aus:- Wir erhalten die Gesamtgröße des Postfachs in GB.
- Wir erhöhen die Gesamtgröße der Datenbank um die Größe des vorhandenen Postfachs.
- Wenn die Gesamtgröße der Datenbank die maximale Datenbankgröße überschreitet oder die Größe des aktuellen Postfachs die maximale Postfachgröße überschreitet, setzen wir die Gesamtgröße der Datenbank gleich der Größe des aktuellen Postfachs und erhöhen den Datenbankzähler um eins.
- Schließlich erstellen wir ein benutzerdefiniertes PS-Objekt und speichern den UPN, die Postfachgröße und den Namen der Zieldatenbank des Postfachbenutzers in diesem Objekt.
- Wenn alle diese Prozesse abgeschlossen sind, exportieren wir die resultierenden Informationen in eine CSV-Datei.
Dieses Skript kann Ihnen dabei helfen, die Datenbank und das Postfach auf Ihrem Exchange-Server einfacher und effektiver zu verwalten. Natürlich ist es möglich, die Funktionsweise und Variablen dieses Skripts weiter auszuarbeiten und an Ihre eigenen Bedürfnisse anzupassen. Auf diese Weise kann die Verwaltung von Datenbanken und Postfächern auf Ihrem Server effizienter und automatisierter werden.
# Database Name
$databaseName = Read-Host -Prompt "Please enter the name of the database"
# Mailboxes List
$mailboxes = Get-Mailbox -Database $databaseName -ResultSize Unlimited
# Mailbox Information
$mailboxInfos = @()
$totalDbSizeGB = 0
$maxDbSizeGB = 200
$maxMailboxSizeGB = 40
$dbCounter = 1
foreach($mailbox in $mailboxes)
{
# Mailbox Size GB
$mailboxSize = (Get-MailboxStatistics $mailbox).TotalItemSize.Value.ToGB()
$totalDbSizeGB += $mailboxSize
# Databases 200GB
if ($totalDbSizeGB -gt $maxDbSizeGB) {
$dbCounter++
$totalDbSizeGB = $mailboxSize
}
# For mailboxes larger than 40GB, distribute the DBS evenly
if ($mailboxSize -gt $maxMailboxSizeGB) {
$dbCounter++
$totalDbSizeGB = $mailboxSize
}
# Create a new object with the email address, mailbox size, and database name
$mailboxInfo = New-Object PSObject -Property @{
EmailAddress = $mailbox.PrimarySmtpAddress
MailboxSizeGB = $mailboxSize
TargetDatabaseName = "DB{0:D2}" -f $dbCounter
}
# Add mailbox information to the list October
$mailboxInfos += $mailboxInfo
}
# CSV
$mailboxInfos | Export-Csv -Path "C:mailboxReport.csv" -NoTypeInformation -UseCulture
Ähnliche Artikel – Exchange Server-Datenbank- und Postfachverwaltung mit PowerShell-Skript (Skript)
- Hinzufügen von Exchange Online PowerShell zum Windows-Terminal
- Blockieren Sie Apps von Drittanbietern in Microsoft Teams
- Exchange 441 4.4.1 Bei der Kommunikation mit der primären Ziel-IP-Adresse ist ein Fehler aufgetreten: „421 4.4.2 Verbindung wurde aufgrund von SocketError unterbrochen.“ Es wurde ein Failover auf einen alternativen Host versucht, der jedoch nicht erfolgreich war.
- Verschieben von FSMO-Rollen und Entfernen von DC mit Metadatenbereinigung