Як експортувати поштові скриньки, менші за загальний розмір

Ми хочемо отримати поштові скриньки на сервері Exchange Server, загальний розмір яких менший за вказаний. Це чудовий спосіб перед перенесенням поштових скриньок до іншої бази даних. У цій статті ви дізнаєтесь, як експортувати поштові скриньки, менші за загальний розмір.

Експортуйте поштові скриньки, менші за загальний розмір сценарію PowerShell

Export-MailboxesTotalSize.ps1 отримає всі поштові скриньки, розмір яких менший за загальний сумарний розмір, який ви визначаєте в сценарії. Для кожної поштової скриньки збирається така інформація:

  1. DisplayName
  2. TotalSizeGB
  3. UserPrincipalName
  4. PrimarySMTPAddress
  5. SMTPAliasAddresses

Примітка:Якщо ви визначаєте загальний розмір 100 ГБ у сценарії, а дві поштові скриньки мають розмір 50 ГБ, відображатимуться лише ці дві поштові скриньки. Це тому, що сумарно обидві поштові скриньки становлять 100 ГБ.

Підготуйте сценарій PowerShell Export-MailboxesTotalSize

Створіть дві папки на сервері Exchange Server(C:)диск:

  • темп
  • Сценарії

Завантажте та розмістіть сценарій PowerShell Export-MailboxesTotalSize.ps1C: сценаріїпапку. Сценарій експортує файл CSV доC: темппапку.

Переконайтеся, що файл розблоковано, щоб запобігти помилкам під час виконання сценарію. Докладніше в статті Помилка без цифрового підпису під час запуску сценарію PowerShell.

ПОВ'ЯЗАНО:Блокувати вхід зі спільних поштових скриньок

Інший варіант – скопіювати та вставити наведений нижче код у блокнот. Дайте йому назвуExport-MailboxesTotalSize.ps1і помістіть його вC: сценаріїпапку.

<#
    .SYNOPSIS
    Export-MailboxesTotalSize.ps1

    .DESCRIPTION
    Export mailboxes that are less than the defined total size.

    .LINK
    www.alitajran.com/export-mailboxes-total-size-less-than/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 10/22/2023 - Initial version
#>

# Define the target total size in GB
$targetTotalSizeGB = 100

# Specify the mailbox database name to search within
$mailboxDatabaseName = "DB01"

# Define the export file path
$exportFilePath = "C:tempMailboxes.csv"

# Get a list of mailbox sizes within the specified mailbox database
$mailboxSizes = Get-Mailbox -ResultSize Unlimited -Database $mailboxDatabaseName |
Get-MailboxStatistics |
Select-Object DisplayName, @{Name = "TotalItemSizeGB"; Expression = { [math]::Round($_.TotalItemSize.Value.ToBytes() / 1GB, 2) } } |
Sort-Object TotalItemSizeGB

# Initialize variables
$Report = [System.Collections.Generic.List[Object]]::new()
$currentTotalSizeGB = 0

# Iterate through mailboxes to find a combination that adds up to the target total size
foreach ($mailbox in $mailboxSizes) {
    $mailboxSizeGB = $mailbox.TotalItemSizeGB

    # Check if adding this mailbox keeps the total size within or equal to the target size
    if (($currentTotalSizeGB + $mailboxSizeGB) -le $targetTotalSizeGB) {
        $selectedMailbox = Get-Mailbox $mailbox.DisplayName -ResultSize Unlimited
        $upn = $selectedMailbox.UserPrincipalName
        $smtpPrimary = $selectedMailbox.PrimarySmtpAddress
        $smtpAliases = $selectedMailbox.EmailAddresses | Where-Object { $_.PrefixString -eq "smtp" -and $_.SmtpAddress -ne $smtpPrimary } | ForEach-Object { $_.SmtpAddress }

        $ReportLine = [PSCustomObject]@{
            'DisplayName'        = $mailbox.DisplayName
            'TotalSizeGB'        = $mailbox.TotalItemSizeGB
            'UserPrincipalName'  = $upn
            'PrimarySmtpAddress' = $smtpPrimary
            'SMTPAliasAddresses' = $smtpAliases -join ", "
        }
        # Add the report line to the List
        $Report.Add($ReportLine)

        # Check if the current total size equals the target size or exceeds it
        if ($currentTotalSizeGB -ge $targetTotalSizeGB) {
            break
        }
    }
}

# Display the selected mailboxes in an interactive table
$Report | Sort-Object TotalSizeGB -Descending | Out-GridView -Title "Selected Mailboxes"

Write-Host "Total Size: $currentTotalSizeGB GB" -ForegroundColor Cyan

# Export the selected mailboxes to a CSV file
$Report | Sort-Object TotalSizeGB -Descending | Export-Csv -Path $exportFilePath -NoTypeInformation -Encoding UTF8

# Display a message indicating successful export
Write-Host "File exported successfully to $exportFilePath" -ForegroundColor Green
  • Рядок 21:Відредагуйте загальний розмір
  • Рядок 24:Відредагуйте назву бази даних
  • Рядок 27:Відредагуйте шлях експортованого файлу CSV

Запустіть сценарій PowerShell Export-MailboxesTotalSize

Запустіть командну оболонку Exchange від імені адміністратора. Змініть шлях до папки зі сценаріями. Після цього запустіть сценарій Export-MailboxesTotalSize.ps1.

PS C:> cd c:scripts
PS C:scripts> .Export-MailboxesTotalSize.ps1

На виході буде показано загальний розмір у Гб, який він зібрав.

Total Size: 1.18 GB

Перевірте поштові скриньки в Out-GridView

АнПоза GridViewпокаже стовпці з поштовими скриньками та їх загальним розміром у Гб.

Файл CSV звіту про відкриті поштові скриньки

Сценарій PowerShell Export-MailboxesTotalSize.ps1 експортує поштові скриньки, менші за загальний розмір, у файл CSV. Знайдіть у шляху файл Mailboxes.csvC: темп.

Відкрийте файл CSV за допомогою улюбленої програми. У цьому прикладі це Microsoft Excel.

Поштові скриньки, менші за загальний розмір звіту, виглядають чудово.

Примітка:Ви бажаєте експортувати всі поштові скриньки у файл CSV і отримати всі їхні розміри поштових скриньок і більше інформації? Прочитайте статтю Отримати розмір поштової скриньки всіх користувачів в Exchange за допомогою PowerShell.

Висновок

Ви дізналися, як експортувати поштові скриньки, менші за загальний розмір, за допомогою Powershell. Отримайте звіт про поштові скриньки, менші за загальний розмір, за допомогою сценарію PowerShell Export-MailboxesTotalSize.ps1 і вивчіть його.

Вам сподобалася ця стаття? Вам також може сподобатися перенесення поштових скриньок Exchange за допомогою файлу CSV. Не забудьте підписатися на нас і поділитися цією статтею.

Related Posts