Forum Discussion
StefanoC66
Jun 28, 2024Iron Contributor
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 ...
- Jul 01, 2024Hi 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)"
}
}
StefanoC66
Jul 01, 2024Iron Contributor
I've solved it. THANKS SO MUCH for your help
StefanoC66
Jul 01, 2024Iron Contributor
Hi chrisslroth
Actually is failing setting back the email addresses
Set-Mailbox : Cannot convert 'ccci@xx.local,email address removed for privacy reasons' to the type 'Microsoft.Exchange.Data.ProxyAddressCollection' required by parameter
'EmailAddresses'. The address xx@xxx.local,email address removed for privacy reasons' is invalid: "xx@xxx.local,email address removed for privacy reasons" isn't a valid SMTP address. The domain name can't contain spaces and it has to have a prefix and a suffix, such as example.com.
At line:28 char:57
+ ... $mailbox.Identity -EmailAddresses ($filteredEmailAddresses -join ",")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-Mailbox], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.Exchange.Management.RecipientTasks.SetMailbox
Actually is failing setting back the email addresses
Set-Mailbox : Cannot convert 'ccci@xx.local,email address removed for privacy reasons' to the type 'Microsoft.Exchange.Data.ProxyAddressCollection' required by parameter
'EmailAddresses'. The address xx@xxx.local,email address removed for privacy reasons' is invalid: "xx@xxx.local,email address removed for privacy reasons" isn't a valid SMTP address. The domain name can't contain spaces and it has to have a prefix and a suffix, such as example.com.
At line:28 char:57
+ ... $mailbox.Identity -EmailAddresses ($filteredEmailAddresses -join ",")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-Mailbox], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.Exchange.Management.RecipientTasks.SetMailbox