Kuinka viedä postilaatikoita, jotka ovat pienempiä kuin kokonaiskoko

Haluamme saada Exchange Serveriin postilaatikoita, joiden kokonaiskoko on annettua määrää pienempi. Tämä on erinomainen tapa ennen kuin siirrämme postilaatikot toiseen tietokantaan. Tässä artikkelissa opit viemään postilaatikoita, jotka ovat pienempiä kuin kokonaiskoko.

Vie postilaatikot, joiden koko on pienempi kuin PowerShell-komentosarja

Export-MailboxesTotalSize.ps1 saa kaikki postilaatikot, jotka ovat pienempiä kuin komentosarjassa määrittämäsi kokonaissumma. Jokaisesta postilaatikosta se kerää seuraavat tiedot:

  1. DisplayName
  2. TotalSizeGB
  3. UserPrincipalName
  4. Ensisijainen SMTP-osoite
  5. SMTPAliasAddresses

Huomautus:Jos määrität komentosarjan kokonaiskoon 100 Gt ja kaksi postilaatikkoa ovat kooltaan 50 Gt, se näyttää vain nämä kaksi postilaatikkoa. Tämä johtuu siitä, että molempien postilaatikoiden yhteenlaskettu tila on 100 Gt.

Valmistele Export-MailboxesTotalSize PowerShell-skripti

Luo kaksi kansiota Exchange-palvelimelle(C:)ajaa:

  • Temp
  • Käsikirjoitukset

Lataa ja aseta Export-MailboxesTotalSize.ps1 PowerShell-komentosarjaC: scriptskansio. Komentosarja vie CSV-tiedoston tiedostoonC: tempkansio.

Varmista, että tiedoston esto on poistettu, jotta estetään virheet komentosarjaa suoritettaessa. Lue lisää artikkelista Ei digitaalisesti allekirjoitettu virhe PowerShell-skriptiä suoritettaessa.

AIHEUTTAA:Estä kirjautuminen jaetuista postilaatikoista

Toinen vaihtoehto on kopioida ja liittää alla oleva koodi Muistioon. Anna sille nimiExport-MailboxesTotalSize.ps1ja aseta se sisäänC: scriptskansio.

<#
    .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
  • Rivi 21:Muokkaa kokonaiskokoa
  • Rivi 24:Muokkaa tietokannan nimeä
  • Rivi 27:Muokkaa viennin CSV-tiedoston polkua

Suorita Export-MailboxesTotalSize PowerShell-komentosarja

Suorita Exchange Management Shell järjestelmänvalvojana. Vaihda komentosarjakansion polku. Suorita sen jälkeen Export-MailboxesTotalSize.ps1-komentosarja.

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

Tulos näyttää kerätyn kokonaiskoon gigatavuina.

Total Size: 1.18 GB

Tarkista postilaatikot Out-GridViewissa

AnOut-GridViewnäyttää sarakkeet postilaatikoilla ja niiden kokonaiskoon gigatavuina.

Avaa postilaatikoiden raportti CSV-tiedosto

Export-MailboxesTotalSize.ps1 PowerShell-komentosarja vie kokonaiskokoa pienemmät postilaatikot CSV-tiedostoon. Etsi polusta tiedosto Mailboxes.csvC: temp.

Avaa CSV-tiedosto suosikkisovelluksellasi. Tässä esimerkissä se on Microsoft Excel.

Raportin kokonaiskokoa pienemmät postilaatikot näyttävät hyvältä.

Huomautus:Haluatko viedä kaikki postilaatikot CSV-tiedostoon ja saada kaikki postilaatikon koon ja lisätietoja? Lue artikkeli Hanki kaikkien Exchange-käyttäjien postilaatikoiden koko PowerShellin avulla.

Johtopäätös

Opit viemään kokonaiskokoa pienempiä postilaatikoita Powershellillä. Hanki kokonaiskokoa pienemmät postilaatikot Export-MailboxesTotalSize.ps1 PowerShell-komentosarjan avulla ja tutustu siihen.

Piditkö tästä artikkelista? Saatat myös pitää Migrate Exchange -postilaatikoista, joissa on CSV-tiedosto. Älä unohda seurata meitä ja jakaa tätä artikkelia.

Related Posts