# bjdc-del-emailaddr
#
# Supprimer toutes les addresses smtp liées à un domaine
#
# Condition : les objets ne doivent pas être soumis à une Email Address Policy qui repositionne le domaine à enlever
#
# Entree :
# Domain : nom de domaine, obligatoire
# Type : type d'objet à sauvegarder, obligatoire, choisir entre Mailbox, Contact ou DistrGroup
# NewDomain : le nouveau domaine à mettre en PrimarySmtpAddress si besoin
#
# Author Bruce JDC
param(
[parameter(Mandatory=$true,Position=0)]
[ValidateNotNullOrEmpty()]
[String] $Domain,
[parameter(Mandatory=$true,Position=1)]
[ValidateNotNullOrEmpty()]
[ValidateSet("Mailbox","Contact","DistrGroup")]
[String] $Type,
[parameter(Mandatory=$true,Position=2)]
[ValidateNotNullOrEmpty()]
[String] $NewDomain
)
# chargement du snapin EMS
if (!(get-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin)) {
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
}
# filtre pipeline
filter filter_domain {
if ($_.SmtpAddress -like $Fdomain) {
Write-Output $_
}
}
switch ($Type) {
"Mailbox" {$cmd = 'Get-Mailbox' ; break }
"Contact" {$cmd = 'Get-MailContact' ; break }
"DistrGroup" {$cmd = 'Get-DistributionGroup' ; break }
# si on passe dans default, c'est qu'il y a un gros problème
default {exit}
}
$FDomain = '*@'+ $Domain
$r = Invoke-Expression ($cmd + ' -ResultSize unlimited -Filter { Emailaddresses -like $Fdomain }')
if ($r) {
foreach ($mb in $r) {
# Si le domaine est utilisé dans la primary, on doit changer celui ci
if ($mb.PrimarySmtpAddress -like $FDomain) {
Write-Host ("Changement d'adresse principale : " + $mb.PrimarySmtpAddress + " devient " + ($mb.PrimarySmtpAddress.Local + '@'+$NewDomain))
switch ($Type) {
"Mailbox" {$mb |Set-Mailbox -PrimarySmtpAddress ($mb.PrimarySmtpAddress.Local + '@'+$NewDomain) -EmailAddressPolicyEnabled $false}
"Contact" {$mb | Set-MailContact -PrimarySmtpAddress ($mb.PrimarySmtpAddress.Local + '@'+$NewDomain)-EmailAddressPolicyEnabled $false}
"DistrGroup" {$mb | Set-DistributionGroup -PrimarySmtpAddress ($mb.PrimarySmtpAddress.Local + '@'+$NewDomain) -EmailAddressPolicyEnabled $false}
# si on passe dans default, c'est qu'il y a un gros problème
default {exit}
}
}
$mb = $mb | Update-List -Property EmailAddresses -Remove ($mb.emailaddresses | filter_domain)
switch ($Type) {
"Mailbox" {$mb | Set-Mailbox}
"Contact" { $mb.ExternalEmailAddress = ($mb.PrimarySmtpAddress.ToString()) ;
$mb.HiddenFromAddressListsEnabled = $true ;
$mb | Set-MailContact}
"DistrGroup" {$mb | Set-DistributionGroup}
# si on passe dans default, c'est qu'il y a un gros problème
default {exit}
}
}
} else {
Write-Host "Aucun résultat"
}
Tag - Powershell
2013 mar. 27
Purger un domaine des adresses emails
2013 mar. 6
Manipulation des Linked Mailbox 2
Un script pour convertir une boite aux lettres normals en LinkedMailbox
Param(
parameter(Mandatory=$true) String $user,
parameter(Mandatory=$true) String $targetDC,
parameter(Mandatory=$true) String $targetAccount )
Import-Module activedirectory
$mb = get-mailbox $user
Disable-Mailbox $mb
$cred = Get-Credential "A valid target domain account"
Write-Host "Please wait AD refresh"
do {
start-sleep -Seconds 10
Connect-Mailbox -Identity $mb.DisplayName -Database $mb.Database -User ((Get-ADDomain).netbiosname+'\'+$mb.SamAccountName) -LinkedMasterAccount $targetaccount -LinkedDomainController $targetDC -LinkedCredential $cred
} while (!$?)