Ajouter des membres en masse dans une liste de distribution Office 365

Ajouter une personne ou deux dans une liste de diffusion Office 365 via la console d’administration exchange est pour moi une tache fastidieuse car il y a beaucoup e clic à faire. imaginez que vous ayez 10 voire 600 personnes à ajouter ?

Pour ma part, je préfère réaliser ce genre de tache via Powershell, que j’aie 2 ou 6 personnes à ajouter, c’est toujours plus rapide de passer par powershell que d’ouvrir la console web. je vous partage ci-dessous un petit script pour réaliser ce genre d’action.

Connexion à office 365

vous n’êtes pas sans savoir qu’il faut commencer par se connecter à Office 365 avec un compte admin. Le code suivant permet d’ouvrir une connexion:

$cred = Get-Credential -Credential 'user@domain.com'
Import-Module MSOnline
Connect-MsolService -Credential $cred #initialisation de la connexion
$msoExchangeURL = “https://ps.outlook.com/powershell/” # lien de connexion donné par microsoft
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $msoExchangeURL -Credential $cred -Authentication Basic -AllowRedirection
Import-PSSession $session 

La première instruction permet de récupérer un « credential » (couple d’identifiant/mot de passe). Une fenetre s’ouvrira avec l’adresse par défaut user@domain.com (à modifier par le votre pour ne pas avoir à le saisir à chaque fois). Une fois le mot de passe saisie les informations seront stocké dans le viable « $cred » l’identifiant en texte dure et le mot de passe en texte sécurisé « System.Security.SecureString » donc invisible.

la deuxieme instruction « Import-Module MSOnline » sert à importer le module permettant l’interaction avec office 365. Vous devez l’installer sur votre poste si ce n’est pas encore le cas. voir ici

Les dexu lignes suivants sont commentés dans le code et les trois lignes suivantes servent :

  • à ouvrir une session persistante « New-PSSession » qui ne se refermera que si nous décidons de le fermer
  • à définir le type d’authentification puis rendre possible la redirection de cette session vers une autre machine
  • enfin à importer la session ouvert depuis le cloud office 365 vers notre propre machine afin de pouvoir interagir avec Microsoft et réaliser les actions que nous voulons.

$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $msoExchangeURL -Credential $cred -Authentication Basic -AllowRedirection
Import-PSSession $session

Ajouter une seule personne dans une liste

Pour ajouter une personne ou deux il suiffit de lancer la commande suivante après avoir établie la connexion:

Add-DistributionGroupMember -Identity « LD@domain.com » -Member « alias@domain.com »

« LD@domain.com » est l’adresse de la liste et « alias@domain.com » est l’adresse de la personne à ajouter dans la liste.

Ajouter plusieurs personnes via un fichier CSV

Tout d’abord, il faut commencer par préparer un fichier CSV séparé par point-virgule « ; » de préférences.

Exempla du fichier CSV à faire

Une fois le fichier préparé vous n’avez qu’à lancer le script suivant:

$done = @()
$notedone = @()

Import-Csv -Path "C:\liste.csv" -Delimiter ";" | ForEach-Object { 
    $adress = Get-mailbox -Identity $_.Alias

    if($adress.IsMailboxEnabled) {
        $done += $_.Alias 
    }else{
        $notDone += $_.Alias 
    }
    Add-DistributionGroupMember -Identity $_.LD  -Member $_.Alias 
}

le script ci-dessus un élément optionnel mais qui me facilite la tache dans ma vie de tous les jours et c’est la raison pour laquelle j’ai décidé de vous le partager. En effet, je commence par créer deux tableaux vide: $done dans lequel j’ajoute les adresse valide de ma liste car je sais qu’il seront ajouter à la LD et $notDone dans lequel j’ajoute les adresses mail invalides qui en conséquence ne seront pas ajouter à la LD souhaité. C’est la condition if else qui permet de gérer ceci. De cette manière, à la fin du script, je peux faire un coup de $done.count pour savoir le nombre d’adresse ajouté avec succès pareil pour le $notDone.count. De même que je peux simplement afficher leur contenu et faire un copier coller à intégrer à mon retour à la personne qui a fait la demande pour lui dire que les adresses suivant n’ont pas été aouté à la liste. Ce sont des bonnes pratiques que je me force à respecter.

La commande « Import-Csv » sert à importer notre fichier et de passer son contenu au boucle « ForEach-Object » et la commande « Add-DistributionGroupMember » sert à ajouter l’utilisateur « $_.alias » dans la liste de distribution « $_.LD » alis et ld étant les nom des colonnes du fichier CSV.

L’exemple ci-dessus prend en compte le cas où vous avez des listes de diffusion différentes selon les utilisateurs. Si vous n’avez qu’une seule liste de diffusion vous pouvez l’ajouter directement dans le script.

sans la partie optionnel ce script se résume en deux ligne:

Import-Csv -Path « C:\liste.csv » -Delimiter « ; » | ForEach-Object {
Add-DistributionGroupMember -Identity $_.LD -Member $_.Alias
}

j’espère que j’ai été assez clair et que ce bout de script vous sera utile.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *