Forum Discussion

StefanoC66's avatar
StefanoC66
Iron Contributor
Jun 28, 2024

Modify users addresses via powershell

I need to make the following: - from a list of domains to be removed from email addresses in a csv file load them. - for each user compare all his email addresses and if anyone is from the list of ...
  • chrisslroth's avatar
    chrisslroth
    Jul 01, 2024
    Hi StefanoC66 please check this:
    # Path to the CSV file containing the domains to be removed
    $domainsCsvPath = "C:\path\to\domains.csv"

    # Load the domains to be removed
    $domainsToRemove = Import-Csv -Path $domainsCsvPath | Select-Object -ExpandProperty domain

    # Get all mailboxes
    $mailboxes = Get-Mailbox -ResultSize Unlimited

    foreach ($mailbox in $mailboxes) {
    # Get all email addresses for the mailbox
    $emailAddresses = $mailbox.EmailAddresses | Where-Object { $_ -like 'SMTP:*' } | ForEach-Object { $_.SmtpAddress }

    # Filter out the email addresses that belong to the domains to be removed
    $filteredEmailAddresses = $emailAddresses | Where-Object {
    $domain = $_.Split("@")[-1]
    -not ($domainsToRemove -contains $domain)
    }

    # Update the mailbox with the filtered email addresses
    if ($filteredEmailAddresses.Count -ne $emailAddresses.Count) {
    Set-Mailbox -Identity $mailbox.Identity -EmailAddresses ($filteredEmailAddresses -join ",")
    Write-Host "Updated email addresses for mailbox: $($mailbox.Identity)"
    }
    }

Resources