vendredi, avril 26, 2024

Le Blog de Teamy

En route pour l'école 2.0 avec Microsoft 365 Education

ExchangeMicrosoft 365PowerShellTeams

Créer des listes de distribution pour votre école


clip_image001

Teams est un superbe outil de collaboration, mais il ne rend pas tous les services. Le courrier électronique reste souvent un bon moyen de communication. En tant que direction de votre établissement scolaire, il vous arrivera de vouloir écrire un courrier à tous vos enseignants, à tous vos élèves, à tous les élèves d’une classe, etc …

Alors oui, vous pouvez dans vos contacts personnels, vous organisez afin de créer des groupes de contacts représentants des groupes cibles. Mais cela reste fastidieux à faire et surtout à maintenir.

Office 365, au travers d’Exchange Online, propose les listes de distribution. A utiliser lorsque vous souhaitez envoyer un courrier électronique à un groupe de personnes sans avoir à taper le nom de chaque destinataire. A vous de créer les listes de distribution en fonction de vos besoins. Une liste représentant tous vos enseignants, une autre représentant tous vos élèves, une liste peut-être par classe, etc …

Le principe d’une liste de distribution, c’est de distribuer le courrier à tous les membres de la liste.  Mais par défaut tous les utilisateurs de votre organisation (de votre école) peuvent envoyer un courrier via cette liste pour atteindre les membres de celle-ci.  Il serait donc malvenu qu’un élève puisse utiliser vos listes de distributions pour envoyer des courriers à tous vos enseignants ou même à tout votre établissement.

C’est pour cela que je vous propose ici deux scripts PowerShell, pour construire dynamiquement ces listes de distributions, et d’y mettre quelques gardes-fous !

 

1er Script : Création d’une liste de distribution avec modération pour les échanges entre les collègues de l’école

#Authentification Parameters
$AdminLogin = "admin@contoso.com"
$AdminPassword = Read-Host -Prompt "Enter your Office 365 Password" -AsSecureString
$credential = new-object System.Management.Automation.PSCredential $AdminLogin, $AdminPassword
Connect-MicrosoftTeams -Credential $credential

#Open Exchange Online Session
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $credential -Authentication Basic -AllowRedirection -ErrorAction Stop
Import-PSSession $Session -DisableNameChecking -ErrorAction Stop

#Connect to Microsoft Online Service
Connect-MsolService -Credential  $credential -ErrorAction Stop

#Distribution List Parameters
$GroupAlias="Staff"
$GroupName="School Staff"
$DirectionUPN = "director@contoso.com"
$SmtpDomain ="contoso.com"
$SmtpAddress = $GroupAlias + "@" + $SmtpDomain

#Delete existing Distribution List
Remove-DistributionGroup -Identity $GroupAlias  -ErrorAction SilentlyContinue

#Create new Distribution List
$distributionGroup = New-DistributionGroup -Name $GroupAlias -DisplayName "$GroupName" -PrimarySmtpAddress "$SmtpAddress" -ManagedBy "$DirectionUPN","$AdminLogin" -Type "Distribution" -MemberDepartRestriction Closed -MemberJoinRestriction Closed -ModeratedBy "$DirectionUPN" -ModerationEnabled $true  -CopyOwnerToMember

#Get all users with Faculty licence type
$allUsers = Get-MsolUser -All | Where-Object {($_.licenses).AccountSkuId -match "Faculty"}
foreach($user in $allUsers) {Add-DistributionGroupMember -Identity "$distributionGroup" -Member $user.UserPrincipalName -ErrorAction SilentlyContinue}

Get-PSSession | Remove-PSSession -ErrorAction SilentlyContinue

 

Les paramètres

L’alias du groupe qui va déterminer l’adresse mail attribuée à la liste de distribution

$GroupAlias="Staff"

Le nom de la liste de distribution, c’est son nom d’affichage

$GroupName="School Staff"

L’identifiant du directeur(rice) de l’école

$DirectionUPN = "director@contoso.com"

Le domaine d’exploitation, le nom de domaine définissant l’adresse mail

$SmtpDomain = "contoso.com"

L’adresse mail de la liste de distribution, composée de l’Alias et du domaine (voir ci-dessus), donc ici l’adresse mail sera staff@contoso.com

$SmtpAddress = $GroupAlias + "@" + $SmtpDomain

La création de la liste de distribution

$distributionGroup = New-DistributionGroup -Name $GroupAlias -DisplayName "$GroupName" -PrimarySmtpAddress "$SmtpAddress" -ManagedBy "$DirectionUPN","$AdminLogin" -Type "Distribution" -MemberDepartRestriction Closed -MemberJoinRestriction Closed -ModeratedBy "$DirectionUPN" -ModerationEnabled $true  -CopyOwnerToMember

Les paramètres de bases -Name, -DisplayName, -PrimarySmtpAddress, vous comprendrez par vous-même
Par contre certains, méritent une explication

-ManagedBy « $DirectionUPN », »$AdminLogin » : On détermine qui pourra gérer la liste de distribution, en l’occurrence l’administrateur et la direction, chaque gérant doit être identifié
-MemberDepartRestriction Closed : On interdit aux membres de quitter cette liste de distribution
-MemberJoinRestriction Closed : On interdit à d’autres utilisateurs de rejoindre la liste de distribution
-CopyOwnerToMember : On signifie que les gérants de la liste sont aussi des membres de cette liste
-ModerationEnabled $true : On signifie que l’usage de cette liste est soumise à modération
-ModeratedBy « $DirectionUPN » : On détermine qui modère l’usage de cette liste

Ensuite on ajoute les membres à cette liste de distribution

$allUsers =  Get-MsolUser -All | Where-Object {($_.licenses).AccountSkuId -match "Faculty"}

Get-MsolUser -All me renvoi tous mes utilisateurs sur qui j’applique un filtre pour ne retenir que les utilisateur qui ont une licence de type ‘Faculty’ donc le personnel de l’école

foreach($user in $allUsers) {Add-DistributionGroupMember -Identity "$distributionGroup" -Member $user.UserPrincipalName -ErrorAction SilentlyContinue}

Ensuite j’utilise la commande Add-DistributionGroupMember au sein d’une boucle pour les ajouter en tant que membre à ma liste de distribution

 

Je vous met ici la référence concernant les paramètres complets de la commande New-DistributionGroup
https://docs.microsoft.com/en-us/powershell/module/exchange/users-and-groups/new-distributiongroup?view=exchange-ps

Remarque :

Remove-DistributionGroup -Identity $GroupAlias  -ErrorAction SilentlyContinue

Me permet de supprimer la liste pour m’assurer de la recréer de manière conforme, en y incluant tout mon personnel actuel.

 

Maintenant, comment cela va-t-il se comporter ?

Si la direction « director@contoso.com » envoi un courrier sur l’adresse staff@contoso.com, tous les membres de la liste recevront le courrier.

Mon personnel scolaire ne peut pas se désinscrire de cette liste, et aucun membre de mon école ne peut joindre cette liste.

Si un membre du personnel ou un des élèves envoi un courrier sur l’adresse staff@contoso.com, la direction « director@contoso.com » va recevoir un courrier lui demandant de valider ou refuser l’envoi du dit courrier au reste de la liste de distribution. Ce qui donne à la direction un pouvoir de modération sur l’usage de cette liste.

Les personnes devant modérer l’usage de cette liste reçoivent ceci dans leur propre boite mail

clip_image002

Si le courrier est approuvé, il sera remis au reste de la liste de distribution, sinon cela en restera là !

 

 

2ème Script : Création d’une liste de distribution pour l’envoi d’un courrier à tous les enseignants et élèves d’une classe

#Authentification Parameters
$AdminLogin = "admin@contoso.com"
$AdminPassword = Read-Host -Prompt "Enter your Office 365 Password" -AsSecureString
$credential = new-object System.Management.Automation.PSCredential $AdminLogin, $AdminPassword
Connect-MicrosoftTeams -Credential $credential

#Open Exchange Online Session
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $credential -Authentication Basic -AllowRedirection -ErrorAction Stop
Import-PSSession $Session -DisableNameChecking -ErrorAction Stop

#Connect to Microsoft Teams
Connect-MicrosoftTeams -Credential $credential -ErrorAction Stop

#Distribution List Parameters
$GroupAlias="Classe-1B"
$GroupName="Classe 1B"
$DirectionUPN = "director@contoso.com"
$SmtpDomain ="contoso.com"
$SmtpAddress = $GroupAlias + "@" + $SmtpDomain

#Delete existing Distribution List
Remove-DistributionGroup -Identity $GroupAlias  -ErrorAction SilentlyContinue

#Create new Distribution List
$distributionGroup = New-DistributionGroup -Name $GroupAlias -DisplayName "$GroupName" -PrimarySmtpAddress "$SmtpAddress" -ManagedBy "$DirectionUPN","$AdminLogin" -Type "Distribution" -MemberDepartRestriction Closed -MemberJoinRestriction Closed -ModeratedBy "$DirectionUPN" -ModerationEnabled $true  -CopyOwnerToMember

#Get all users from a Team Classroom
$teamUsers = Get-TeamUser -GroupId "$TeamId" 
foreach($user in $teamUsers)
{
    $userUPN = $user.User
    $userRole = $user.Role
    Add-DistributionGroupMember -Identity "$distributionGroupName" -Member "$userUPN" -ErrorAction SilentlyContinue
    if($userRole -eq "Owner") { Set-DistributionGroup -Identity "$distributionGroupName" -AcceptMessagesOnlyFrom @{Add="$userUPN"} -ErrorAction SilentlyContinue}
}

Get-PSSession | Remove-PSSession -ErrorAction SilentlyContinue

Plus besoin de vous décrire les différents paramètres

$teamUsers = Get-TeamUser -GroupId "$TeamId"

Sur base de l’id de mon équipe Teams (ma classe), je récupère l’ensemble des utilisateurs (Elèves et Enseignants, Membres et Propriétaires de l’équipe Teams).

Add-DistributionGroupMember -Identity "$distributionGroupName" -Member "$userUPN" -ErrorAction SilentlyContinue

Ensuite j’utilise la commande Add-DistributionGroupMember au sein d’une boucle pour les ajouter en tant que membre à ma liste de distribution

if($userRole -eq "Owner") { Set-DistributionGroup -Identity "$distributionGroupName" -AcceptMessagesOnlyFrom @{Add="$userUPN"} -ErrorAction SilentlyContinue}

Par défaut, tout membre d’une liste de distribution peut envoyer un courrier à cette liste, ici je m’assure que seuls les « Owners » de mon équipe donc les enseignants puissent envoyer des courriers via cette liste de distribution. Mais sous le contrôle de la direction qui devra valider ou refuser les envois des courriers à cette liste. Pour rappel : -ModeratedBy « $DirectionUPN »

 

Maintenant, comment cela va-t-il se comporter ?

Si la direction « director@contoso.com » envoi un courrier sur l’adresse Classe-1B@contoso.com, tous les membres de la liste recevront le courrier.

Mes enseignants et mes élèves de cette classe ne peuvent pas se désinscrire de cette liste, et aucun membre de mon école ne peut joindre cette liste.

Si un enseignant de la classe, membre de cette liste, envoi un courrier sur l’adresse Classe-1B@contoso.com, la direction « director@contoso.com » va recevoir un courrier lui demandant de valider ou refuser l’envoi du dit courrier au reste de la liste de distribution. Ce qui donne à la direction un pouvoir de modération sur l’usage de cette liste.

Si un membre du personnel non membre de la classe ou si un élève envoie un courrier sur cette adresse Classe-1B@contoso.com, il recevra par courrier qu’il n’est pas autorisé à utiliser cette liste de distribution.

 

A vous maintenant sur cette base, d’imaginer d’autres scénario !

En espérant que ces deux scripts puissent vous servir, merci de votre lecture.

Comment avez-vous trouvé ce billet ?

N'hésitez pas à voter !

Score moyen 5 / 5. Nombre de vote 2


S’abonner
Notifier de
guest
0 Commentaires
Inline Feedbacks
View all comments