{"id":83525,"date":"2020-04-11T19:50:10","date_gmt":"2020-04-11T17:50:10","guid":{"rendered":"https:\/\/www.junarnoalg.com\/?p=83525"},"modified":"2024-05-19T20:05:17","modified_gmt":"2024-05-19T18:05:17","slug":"crer-des-listes-de-distribution-pour-votre-cole","status":"publish","type":"post","link":"https:\/\/blog.teamy.be\/index.php\/2020\/04\/11\/crer-des-listes-de-distribution-pour-votre-cole\/","title":{"rendered":"Cr&eacute;er des listes de distribution pour votre &eacute;cole"},"content":{"rendered":"<p><a href=\"https:\/\/blog.teamy.be\/wp-content\/uploads\/2020\/04\/clip_image001.png\"><img fetchpriority=\"high\" decoding=\"async\" style=\"display: inline; background-image: none;\" title=\"clip_image001\" src=\"https:\/\/blog.teamy.be\/wp-content\/uploads\/2020\/04\/clip_image001_thumb.png\" alt=\"clip_image001\" width=\"911\" height=\"476\" border=\"0\" \/><\/a><\/p>\n<p>Teams est un superbe outil de collaboration, mais il ne rend pas tous les services. Le courrier \u00e9lectronique reste souvent un bon moyen de communication. En tant que direction de votre \u00e9tablissement scolaire, il vous arrivera de vouloir \u00e9crire un courrier \u00e0 tous vos enseignants, \u00e0 tous vos \u00e9l\u00e8ves, \u00e0 tous les \u00e9l\u00e8ves d&rsquo;une classe, etc \u2026<\/p>\n<p>Alors oui, vous pouvez dans vos contacts personnels, vous organisez afin de cr\u00e9er des groupes de contacts repr\u00e9sentants des groupes cibles. Mais cela reste fastidieux \u00e0 faire et surtout \u00e0 maintenir.<\/p>\n<p>Office 365, au travers d&rsquo;Exchange Online, propose les listes de distribution. A utiliser lorsque vous souhaitez envoyer un courrier \u00e9lectronique \u00e0 un groupe de personnes sans avoir \u00e0 taper le nom de chaque destinataire. A vous de cr\u00e9er les listes de distribution en fonction de vos besoins. Une liste repr\u00e9sentant tous vos enseignants, une autre repr\u00e9sentant tous vos \u00e9l\u00e8ves, une liste peut-\u00eatre par classe, etc \u2026<\/p>\n<p>Le principe d&rsquo;une liste de distribution, c&rsquo;est de distribuer le courrier \u00e0 tous les membres de la liste.\u00a0 Mais par d\u00e9faut tous les utilisateurs de votre organisation (de votre \u00e9cole) peuvent envoyer un courrier via cette liste pour atteindre les membres de celle-ci.\u00a0 Il serait donc malvenu qu&rsquo;un \u00e9l\u00e8ve puisse utiliser vos listes de distributions pour envoyer des courriers \u00e0 tous vos enseignants ou m\u00eame \u00e0 tout votre \u00e9tablissement.<\/p>\n<p>C&rsquo;est pour cela que je vous propose ici deux scripts PowerShell, pour construire dynamiquement ces listes de distributions, et d&rsquo;y mettre quelques gardes-fous !<\/p>\n<p>&nbsp;<\/p>\n<h3>1er Script : Cr\u00e9ation d&rsquo;une liste de distribution avec mod\u00e9ration pour les \u00e9changes entre les coll\u00e8gues de l&rsquo;\u00e9cole<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">#Authentification Parameters\n$AdminLogin = \"admin@contoso.com\"\n$AdminPassword = Read-Host -Prompt \"Enter your Office 365 Password\" -AsSecureString\n$credential = new-object System.Management.Automation.PSCredential $AdminLogin, $AdminPassword\nConnect-MicrosoftTeams -Credential $credential\n\n#Open Exchange Online Session\n$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri \"https:\/\/outlook.office365.com\/powershell-liveid\/\" -Credential $credential -Authentication Basic -AllowRedirection -ErrorAction Stop\nImport-PSSession $Session -DisableNameChecking -ErrorAction Stop\n\n#Connect to Microsoft Online Service\nConnect-MsolService -Credential  $credential -ErrorAction Stop\n\n#Distribution List Parameters\n$GroupAlias=\"Staff\"\n$GroupName=\"School Staff\"\n$DirectionUPN = \"director@contoso.com\"\n$SmtpDomain =\"contoso.com\"\n$SmtpAddress = $GroupAlias + \"@\" + $SmtpDomain\n\n#Delete existing Distribution List\nRemove-DistributionGroup -Identity $GroupAlias  -ErrorAction SilentlyContinue\n\n#Create new Distribution List\n$distributionGroup = New-DistributionGroup -Name $GroupAlias -DisplayName \"$GroupName\" -PrimarySmtpAddress \"$SmtpAddress\" -ManagedBy \"$DirectionUPN\",\"$AdminLogin\" -Type \"Distribution\" -MemberDepartRestriction Closed -MemberJoinRestriction Closed -ModeratedBy \"$DirectionUPN\" -ModerationEnabled $true  -CopyOwnerToMember\n\n#Get all users with Faculty licence type\n$allUsers = Get-MsolUser -All | Where-Object {($_.licenses).AccountSkuId -match \"Faculty\"}\nforeach($user in $allUsers) {Add-DistributionGroupMember -Identity \"$distributionGroup\" -Member $user.UserPrincipalName -ErrorAction SilentlyContinue}\n\nGet-PSSession | Remove-PSSession -ErrorAction SilentlyContinue<\/pre>\n<p>&nbsp;<\/p>\n<p>Les param\u00e8tres<\/p>\n<p>L&rsquo;alias du groupe qui va d\u00e9terminer l&rsquo;adresse mail attribu\u00e9e \u00e0 la liste de distribution<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$GroupAlias=\"Staff\"<\/pre>\n<p>Le nom de la liste de distribution, c&rsquo;est son nom d&rsquo;affichage<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$GroupName=\"School Staff\"<\/pre>\n<p>L&rsquo;identifiant du directeur(rice) de l&rsquo;\u00e9cole<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$DirectionUPN = \"director@contoso.com\"<\/pre>\n<p>Le domaine d&rsquo;exploitation, le nom de domaine d\u00e9finissant l&rsquo;adresse mail<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$SmtpDomain = \"contoso.com\"<\/pre>\n<p>L&rsquo;adresse mail de la liste de distribution, compos\u00e9e de l&rsquo;Alias et du domaine (voir ci-dessus), donc ici l&rsquo;adresse mail sera staff@contoso.com<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$SmtpAddress = $GroupAlias + \"@\" + $SmtpDomain<\/pre>\n<p>La cr\u00e9ation de la liste de distribution<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$distributionGroup = New-DistributionGroup -Name $GroupAlias -DisplayName \"$GroupName\" -PrimarySmtpAddress \"$SmtpAddress\" -ManagedBy \"$DirectionUPN\",\"$AdminLogin\" -Type \"Distribution\" -MemberDepartRestriction Closed -MemberJoinRestriction Closed -ModeratedBy \"$DirectionUPN\" -ModerationEnabled $true  -CopyOwnerToMember\n<\/pre>\n<p>Les param\u00e8tres de bases -Name, -DisplayName, -PrimarySmtpAddress, vous comprendrez par vous-m\u00eame<br \/>\nPar contre certains, m\u00e9ritent une explication<\/p>\n<p>-ManagedBy \u00ab\u00a0$DirectionUPN\u00a0\u00bb,\u00a0\u00bb$AdminLogin\u00a0\u00bb : On d\u00e9termine qui pourra g\u00e9rer la liste de distribution, en l&rsquo;occurrence l&rsquo;administrateur et la direction, chaque g\u00e9rant doit \u00eatre identifi\u00e9<br \/>\n-MemberDepartRestriction Closed : On interdit aux membres de quitter cette liste de distribution<br \/>\n-MemberJoinRestriction Closed : On interdit \u00e0 d&rsquo;autres utilisateurs de rejoindre la liste de distribution<br \/>\n-CopyOwnerToMember : On signifie que les g\u00e9rants de la liste sont aussi des membres de cette liste<br \/>\n-ModerationEnabled $true : On signifie que l&rsquo;usage de cette liste est soumise \u00e0 mod\u00e9ration<br \/>\n-ModeratedBy \u00ab\u00a0$DirectionUPN\u00a0\u00bb : On d\u00e9termine qui mod\u00e8re l&rsquo;usage de cette liste<\/p>\n<p>Ensuite on ajoute les membres \u00e0 cette liste de distribution<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$allUsers =  Get-MsolUser -All | Where-Object {($_.licenses).AccountSkuId -match \"Faculty\"}<\/pre>\n<p>Get-MsolUser -All me renvoi tous mes utilisateurs sur qui j&rsquo;applique un filtre pour ne retenir que les utilisateur qui ont une licence de type &lsquo;Faculty&rsquo; donc le personnel de l&rsquo;\u00e9cole<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">foreach($user in $allUsers) {Add-DistributionGroupMember -Identity \"$distributionGroup\" -Member $user.UserPrincipalName -ErrorAction SilentlyContinue}<\/pre>\n<p>Ensuite j&rsquo;utilise la commande Add-DistributionGroupMember au sein d&rsquo;une boucle pour les ajouter en tant que membre \u00e0 ma liste de distribution<\/p>\n<p>&nbsp;<\/p>\n<p>Je vous met ici la r\u00e9f\u00e9rence concernant les param\u00e8tres complets de la commande New-DistributionGroup<br \/>\n<a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/exchange\/users-and-groups\/new-distributiongroup?view=exchange-ps\">https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/exchange\/users-and-groups\/new-distributiongroup?view=exchange-ps<\/a><\/p>\n<p>Remarque :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Remove-DistributionGroup -Identity $GroupAlias  -ErrorAction SilentlyContinue<\/pre>\n<p>Me permet de supprimer la liste pour m&rsquo;assurer de la recr\u00e9er de mani\u00e8re conforme, en y incluant tout mon personnel actuel.<\/p>\n<p>&nbsp;<\/p>\n<p>Maintenant, comment cela va-t-il se comporter ?<\/p>\n<p>Si la direction \u00ab\u00a0director@contoso.com\u00a0\u00bb envoi un courrier sur l&rsquo;adresse staff@contoso.com, tous les membres de la liste recevront le courrier.<\/p>\n<p>Mon personnel scolaire ne peut pas se d\u00e9sinscrire de cette liste, et aucun membre de mon \u00e9cole ne peut joindre cette liste.<\/p>\n<p>Si un membre du personnel ou un des \u00e9l\u00e8ves envoi un courrier sur l&rsquo;adresse staff@contoso.com, la direction \u00ab\u00a0director@contoso.com\u00a0\u00bb va recevoir un courrier lui demandant de valider ou refuser l&rsquo;envoi du dit courrier au reste de la liste de distribution. Ce qui donne \u00e0 la direction un pouvoir de mod\u00e9ration sur l&rsquo;usage de cette liste.<\/p>\n<p>Les personnes devant mod\u00e9rer l&rsquo;usage de cette liste re\u00e7oivent ceci dans leur propre boite mail<\/p>\n<p><a href=\"https:\/\/blog.teamy.be\/wp-content\/uploads\/2020\/04\/clip_image002.png\"><img decoding=\"async\" style=\"display: inline; background-image: none;\" title=\"clip_image002\" src=\"https:\/\/blog.teamy.be\/wp-content\/uploads\/2020\/04\/clip_image002_thumb.png\" alt=\"clip_image002\" width=\"733\" height=\"223\" border=\"0\" \/><\/a><\/p>\n<p>Si le courrier est approuv\u00e9, il sera remis au reste de la liste de distribution, sinon cela en restera l\u00e0 !<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3>2\u00e8me Script : Cr\u00e9ation d&rsquo;une liste de distribution pour l&rsquo;envoi d&rsquo;un courrier \u00e0 tous les enseignants et \u00e9l\u00e8ves d&rsquo;une classe<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">#Authentification Parameters\n$AdminLogin = \"admin@contoso.com\"\n$AdminPassword = Read-Host -Prompt \"Enter your Office 365 Password\" -AsSecureString\n$credential = new-object System.Management.Automation.PSCredential $AdminLogin, $AdminPassword\nConnect-MicrosoftTeams -Credential $credential\n\n#Open Exchange Online Session\n$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri \"https:\/\/outlook.office365.com\/powershell-liveid\/\" -Credential $credential -Authentication Basic -AllowRedirection -ErrorAction Stop\nImport-PSSession $Session -DisableNameChecking -ErrorAction Stop\n\n#Connect to Microsoft Teams\nConnect-MicrosoftTeams -Credential $credential -ErrorAction Stop\n\n#Distribution List Parameters\n$GroupAlias=\"Classe-1B\"\n$GroupName=\"Classe 1B\"\n$DirectionUPN = \"director@contoso.com\"\n$SmtpDomain =\"contoso.com\"\n$SmtpAddress = $GroupAlias + \"@\" + $SmtpDomain\n\n#Delete existing Distribution List\nRemove-DistributionGroup -Identity $GroupAlias  -ErrorAction SilentlyContinue\n\n#Create new Distribution List\n$distributionGroup = New-DistributionGroup -Name $GroupAlias -DisplayName \"$GroupName\" -PrimarySmtpAddress \"$SmtpAddress\" -ManagedBy \"$DirectionUPN\",\"$AdminLogin\" -Type \"Distribution\" -MemberDepartRestriction Closed -MemberJoinRestriction Closed -ModeratedBy \"$DirectionUPN\" -ModerationEnabled $true  -CopyOwnerToMember\n\n#Get all users from a Team Classroom\n$teamUsers = Get-TeamUser -GroupId \"$TeamId\" \nforeach($user in $teamUsers)\n{\n    $userUPN = $user.User\n    $userRole = $user.Role\n    Add-DistributionGroupMember -Identity \"$distributionGroupName\" -Member \"$userUPN\" -ErrorAction SilentlyContinue\n    if($userRole -eq \"Owner\") { Set-DistributionGroup -Identity \"$distributionGroupName\" -AcceptMessagesOnlyFrom @{Add=\"$userUPN\"} -ErrorAction SilentlyContinue}\n}\n\nGet-PSSession | Remove-PSSession -ErrorAction SilentlyContinue<\/pre>\n<p>Plus besoin de vous d\u00e9crire les diff\u00e9rents param\u00e8tres<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">$teamUsers = Get-TeamUser -GroupId \"$TeamId\"<\/pre>\n<p>Sur base de l&rsquo;id de mon \u00e9quipe Teams (ma classe), je r\u00e9cup\u00e8re l&rsquo;ensemble des utilisateurs (El\u00e8ves et Enseignants, Membres et Propri\u00e9taires de l&rsquo;\u00e9quipe Teams).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Add-DistributionGroupMember -Identity \"$distributionGroupName\" -Member \"$userUPN\" -ErrorAction SilentlyContinue<\/pre>\n<p>Ensuite j&rsquo;utilise la commande Add-DistributionGroupMember au sein d&rsquo;une boucle pour les ajouter en tant que membre \u00e0 ma liste de distribution<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">if($userRole -eq \"Owner\") { Set-DistributionGroup -Identity \"$distributionGroupName\" -AcceptMessagesOnlyFrom @{Add=\"$userUPN\"} -ErrorAction SilentlyContinue}\n<\/pre>\n<p>Par d\u00e9faut, tout membre d&rsquo;une liste de distribution peut envoyer un courrier \u00e0 cette liste, ici je m&rsquo;assure que seuls les \u00ab\u00a0Owners\u00a0\u00bb de mon \u00e9quipe donc les enseignants puissent envoyer des courriers via cette liste de distribution. Mais sous le contr\u00f4le de la direction qui devra valider ou refuser les envois des courriers \u00e0 cette liste. Pour rappel : -ModeratedBy \u00ab\u00a0$DirectionUPN\u00a0\u00bb<\/p>\n<p>&nbsp;<\/p>\n<p>Maintenant, comment cela va-t-il se comporter ?<\/p>\n<p>Si la direction \u00ab\u00a0director@contoso.com\u00a0\u00bb envoi un courrier sur l&rsquo;adresse Classe-1B@contoso.com, tous les membres de la liste recevront le courrier.<\/p>\n<p>Mes enseignants et mes \u00e9l\u00e8ves de cette classe ne peuvent pas se d\u00e9sinscrire de cette liste, et aucun membre de mon \u00e9cole ne peut joindre cette liste.<\/p>\n<p>Si un enseignant de la classe, membre de cette liste, envoi un courrier sur l&rsquo;adresse Classe-1B@contoso.com, la direction \u00ab\u00a0director@contoso.com\u00a0\u00bb va recevoir un courrier lui demandant de valider ou refuser l&rsquo;envoi du dit courrier au reste de la liste de distribution. Ce qui donne \u00e0 la direction un pouvoir de mod\u00e9ration sur l&rsquo;usage de cette liste.<\/p>\n<p>Si un membre du personnel non membre de la classe ou si un \u00e9l\u00e8ve envoie un courrier sur cette adresse Classe-1B@contoso.com, il recevra par courrier qu&rsquo;il n&rsquo;est pas autoris\u00e9 \u00e0 utiliser cette liste de distribution.<\/p>\n<p>&nbsp;<\/p>\n<p>A vous maintenant sur cette base, d&rsquo;imaginer d&rsquo;autres sc\u00e9nario !<\/p>\n<p>En esp\u00e9rant que ces deux scripts puissent vous servir, merci de votre lecture.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Teams est un superbe outil de collaboration, mais il ne rend pas tous les services. Le courrier \u00e9lectronique reste souvent<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[174,22,166,164],"tags":[213],"class_list":["post-83525","post","type-post","status-publish","format-standard","hentry","category-exchange","category-microsoft-365","category-powershell","category-microsoft-teams","tag-post"],"views":2032,"_links":{"self":[{"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/posts\/83525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/comments?post=83525"}],"version-history":[{"count":1,"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/posts\/83525\/revisions"}],"predecessor-version":[{"id":86052,"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/posts\/83525\/revisions\/86052"}],"wp:attachment":[{"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/media?parent=83525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/categories?post=83525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.teamy.be\/index.php\/wp-json\/wp\/v2\/tags?post=83525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}