À mesure que Microsoft améliore sa posture de sécurité dans tous les produits et services, des modifications ont été apportées aux fonctionnalités d’API qui peuvent avoir un impact sur les clients qui s’appuyaient précédemment sur des autorisations d’application uniquement pour provisionner des blocs-notes pour la classe et les équipes de classe à l’aide d’API.
Remarque
Dans la plupart des cas, nous vous recommandons d’utiliser School Synchronisation des données (SDS), un service gratuit qui permet d’automatiser le processus de synchronisation des données des utilisateurs et des listes de travail à partir des systèmes d’information ou de gestion des étudiants avec Microsoft 365. SDS vous aide à gérer vos organization, utilisateurs, classes et rôles éducatifs, en synchronisant vos données avec Microsoft Entra ID et Microsoft 365, afin que vous puissiez utiliser Microsoft Teams, Intune éducation, Exchange Online, SharePoint Online, OneNote Pour la classe, et activer des applications tierces avec intégration Authentification unique.
Vous pouvez toujours provisionner des classes et des notebooks à grande échelle à l’aide de PowerShell et de Microsoft Graph en suivant les méthodes prises en charge. Cet article décrit les étapes et fournit des liens vers la documentation appropriée.
Important
Si vous travaillez avec un partenaire tiers sur l’approvisionnement à grande échelle de classes, partagez cet article avec lui avant de prendre des mesures par vous-même.
Provisionnement de nouvelles classes
Option 1 (recommandée) : Utilisation de Teams PowerShell
Avertissement
Avant le 21 août 2025, une version antérieure de cette documentation recommandait l’approvisionnement via Teams PowerShell avant la mise à jour requise. Ces mises à jour sont maintenant terminées, et vous pouvez procéder à cette approche à ce stade. Merci de votre patience.
Il est simple de provisionner de nouvelles classes à l’aide de Teams PowerShell, qui inclut toute la configuration nécessaire pour les classes et les notebooks. Personnalisez simplement le nom d’affichage souhaité dans le script suivant et exécutez-le en tant qu’administrateur.
Important
Le script suivant nécessite que vous utilisiez Microsoft Teams PowerShell version 7.3.1 ou ultérieure.
Exemple de script
| # Utilisation du SDK PowerShell Teams Install-Module -MicrosoftTeams -Force -AllowClobber New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class' |
|---|
Option 2 : Utilisation de Microsoft Graph PowerShell
Si vous n’avez pas accès à Teams PowerShell, vous pouvez explorer les classes d’approvisionnement à grande échelle à l’aide de Microsoft Graph. Modifiez les paramètres en haut du script suivant, le cas échéant, puis exécutez le script en tant qu’administrateur pour provisionner des classes et des notebooks à grande échelle :
Exemple de script
| # À l’aide de MS API Graph Install-Module Microsoft.Graph -AllowClobber -Force # PARAMETERS $Name = « Test Class 20251208.3 » $Description = « A Test Class » $Mail = $Name -replace '[^a-zA-Z0-9\s]|[ ]', '' # Remplacez cet alias de messagerie par une méthode de génération préférée $OwnerId = « 000-000-00000-00000-0000 » # Remplacez-le par le GUID du propriétaire # ------------ # Créer un groupe M365 $CreateGroupBody = @" { "description » : « $Name », « displayName » : « $Description », « groupTypes » : [ « Unified » ], « mailEnabled » : false, « mailNickname » : « $Mail », « securityEnabled » : false, « members@odata.bind » : [ « https://graph.microsoft.com/v1.0/users/$OwnerId » ], « owners@odata.bind » : [ « https://graph.microsoft.com/v1.0/users/$OwnerId » ], « visibility » : « HiddenMembership », « creationOptions » : [ « ExchangeProvisioningFlags :461 », « classAssignments » ], « extension_fe2174665583431c953114ff7268b7b3_Education_ObjectType » : « Section », » resourceBehaviorOptions » : [ « appRoleForSite :22d27567-b3f0-4dc2-9ec2-46ed368ba538 :fullcontrol », « appRoleForSite :c9a559d2-7aab-4f13-a6ed-e7e9c52aec87 :fullcontrol », « appRoleForSite :13291f5a-59ac-4c59-b0fa-d1632e8f3292 :fullcontrol », « appRoleForSite :2d4d3d8e-2be3-4bef-9f87-7875a61c29de :fullcontrol », « appRoleForSite :8f348934-64be-4bb2-bc16-c54c96789f43 :fullcontrol » ] } « @ $NewGroup = Invoke-MgGraphRequest -uri 'https://graph.microsoft.com/v1.0/groups/' -Body $CreateGroupBody -Method POST -ContentType « application/json » # Create Teams Class Team from group $CreateTeamBody = @{ « template@odata.bind » = « https://graph.microsoft.com/v1.0/teamsTemplates('educationClass') » « group@odata.bind » = « https://graph.microsoft.com/v1.0/groups('$($NewGroup.Id)') » } New-MgTeam -BodyParameter $CreateTeamBody |
|---|
Résoudre les problèmes : octroi d’autorisations à des sites de classes existants
Remarque
Cette approche nécessite également que la personne qui exécute le script soit un administrateur de site, comme décrit ici. Le script ci-dessous inclut une étape permettant d’ajouter l’utilisateur actuellement connecté en tant qu’administrateur de site pour les sites nécessitant une résolution des problèmes.
Si vous avez déjà provisionné des classes et que vous observez des échecs ou des problèmes d’autorisation avec le bloc-notes pour la classe ou les affectations Teams, vous pouvez mettre à jour les autorisations de site pour vos classes à l’aide du script suivant, en remplaçant le paramètre rawGroups par les GROUPID des classes affectées :
Exemple de script
| #You devez vous connecter à SharePoint, Exchange Online, et Graph avec les -Scopes Sites.FullControl.All suivants, ainsi que collecter les groupID des équipes de classes affectées $rawGroups =@(« b0a5905d-09ae-4605-8e12-94da93ecbe92 »,"e0eec729-24ef-451e-b079-56d0baf4dfc9 ») # Convertir en tableau d’objets avec .groupid $groups = $rawGroups | ForEach-Object { Get-UnifiedGroup -Identity $_ } $step = 0 #get le compte d’utilisateur actuellement connecté à ajouter en tant qu’administrateur de site $CUA = (get-mgcontext).account foreach ($group in $groups) { $step = $step + 1 Set-SPOUser -Site $group. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $true Write-Host « SiteCollectionAdmin ajouté sur $step des sites de classe $($Groups.Count) » } #Pause pendant 5 minutes avant de lancer la création du dossier général Write-Host « Suspension pendant 5 minutes avant d’ajouter des perms pour autoriser le siteCollectionAdmin à propager » Start-Sleep -Seconds 300 Write-Host « Working on $($Groups.Count) Classes » foreach ($group in $groups) { #$step = $step + 1 $Site = Get-MgGroupSite -GroupId $group. ExternalDirectoryObjectId -SiteId « root » $SiteId = $Site.Id Write-Host « Processing permissions on $step of $($Groups.Count) Classes » # Il s’agit des AppIds pour les applications Microsoft EDU courantes $AppIds = @{ « 8f348934-64be-4bb2-bc16-c54c96789f43"="EDU Assignments » ; « 22d27567-b3f0-4dc2-9ec2-46ed368ba538"="Reading Assignments » ; « 2d4d3d8e-2be3-4bef-9f87-7875a61c29de"="OneNote » ; « c9a559d2-7aab-4f13-a6ed-e7e9c52aec87"="Microsoft Forms » ; » 13291f5a-59ac-4c59-b0fa-d1632e8f3292"="EDU OneNote » ; } # Appliquer les autorisations au site de groupe $AppIds.Keys | %{ $AppId = $_ $Name = $AppIds[$_] $Body = @" { "roles » : ["fullcontrol"], « grantedToIdentities » : [{ « application » : { « id » : « $AppId », « displayName » : « $Name » } }] } « @ Invoke-MgGraphRequest -Method POST -Uri « https://graph.microsoft.com/v1.0/sites/$SiteId/permissions » -Body $Body -ContentType « application/json » } } Write-Host « Processed $($Groups.Count) Classes, removing sitecollectionadmin » $step = 0 foreach ($group dans $groups) { $step = $step + 1 Set-SPOUser -Site $group. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $false Write-Host « SiteCollectionAdmin supprimé sur $step des sites de classe $($Groups.Count) » } |
|---|