Da Microsoft seinen Sicherheitsstatus für alle Produkte und Dienste verbessert, wurden Änderungen an der API-Funktionalität vorgenommen, die sich auf Kunden auswirken können, die sich zuvor auf Nur-App-Berechtigungen zum Bereitstellen von Kursnotizbüchern und Klassenteams mithilfe von APIs verlassen haben.
Hinweis
In den meisten Fällen wird die Verwendung von School Datensynchronisierung (SDS) empfohlen, einem kostenlosen Dienst, der dazu beiträgt, den Prozess der Synchronisierung von Benutzer- und Listendaten aus Student Information or Management Systems mit Microsoft 365 zu automatisieren. SDS unterstützt Sie bei der Verwaltung Ihrer bildungsbezogenen organization, Benutzer, Kurse und Rollen, beim Synchronisieren Ihrer Daten mit Microsoft Entra ID und Microsoft 365, sodass Sie Microsoft Teams, Intune for Education, Exchange Online, SharePoint Online und OneNote-Kursnotizbücher verwenden und Apps von Drittanbietern mit aktivieren können. Single Sign-On Integration.
Mithilfe von PowerShell und Microsoft Graph können Sie weiterhin Klassen und Notebooks im großen Stil bereitstellen, indem Sie die unterstützten Methoden verwenden. In diesem Artikel werden die Schritte beschrieben und Links zu relevanter Dokumentation bereitgestellt.
Wichtig
Wenn Sie mit einem Drittanbieter an der bedarfsorientierten Bereitstellung von Klassen zusammenarbeiten, teilen Sie diesen Artikel mit ihnen, bevor Sie selbst Schritte unternehmen.
Bereitstellen neuer Klassen
Option 1 (empfohlen): Verwenden von Teams PowerShell
Warnung
Vor dem 21. August 2025 wurde in einer früheren Version dieser Dokumentation die Bereitstellung über Teams PowerShell empfohlen, bevor die erforderliche Aktualisierung vorgenommen wurde. Diese Updates sind jetzt abgeschlossen, und Sie können diesen Ansatz zu diesem Zeitpunkt fortsetzen. Vielen Dank für Ihre Geduld.
Es ist einfach, neue Klassen mithilfe von Teams PowerShell bereitzustellen, die alle erforderlichen Setups für Klassen und Notebooks enthalten. Passen Sie einfach den gewünschten Anzeigenamen im folgenden Skript an, und führen Sie ihn als Administrator aus.
Wichtig
Das folgende Skript erfordert, dass Sie Microsoft Teams PowerShell Version 7.3.1 oder höher verwenden.
Beispielskript
| # Verwenden des Teams PowerShell SDK Install-Module -MicrosoftTeams -Force -AllowClobber New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class' |
|---|
Option 2: Verwenden von Microsoft Graph PowerShell
Wenn Sie keinen Zugriff auf Teams PowerShell haben, sollten Sie die Bereitstellungsklassen im großen Stil mithilfe von Microsoft Graph untersuchen. Bearbeiten Sie die Parameter am Anfang des folgenden Skripts entsprechend, und führen Sie das Skript dann als Administrator aus, um Klassen und Notebooks im großen Stil bereitzustellen:
Beispielskript
| # Verwenden des MS Graph-API Install-Module Microsoft.Graph -AllowClobber -Force # PARAMETERS $Name = "Test class 20251208.3" $Description = "A Test Class" $Mail = $Name -replace '[^a-zA-Z0-9\s]|[ ]', '' # Ersetzen Sie diesen E-Mail-Alias durch eine bevorzugte Generierungsmethode $OwnerId = "000-0000-00000-0000-000" # Ersetzen Sie dies durch die GUID des Besitzers # ------------ # Erstellen einer neuen M365-Gruppe $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 |
|---|
Problembehandlung: Erteilen von Berechtigungen für vorhandene Klassenwebsites
Hinweis
Dieser Ansatz erfordert auch, dass die Person, die das Skript ausführt, ein Websiteadministrator ist, wie hier beschrieben. Das folgende Skript enthält einen Schritt zum Hinzufügen des aktuell angemeldeten Benutzers als Websiteadministrator für die Websites, für die eine Problembehandlung erforderlich ist.
Wenn Sie bereits Klassen bereitgestellt haben und Fehler oder Berechtigungsprobleme mit Kursnotizbuch- oder Teams-Zuweisungen beobachten, können Sie die Websiteberechtigungen für Ihre Klassen mithilfe des folgenden Skripts aktualisieren und dabei den rawGroups-Parameter durch die groupIDs der betroffenen Klassen ersetzen:
Beispielskript
| #You müssen eine Verbindung mit SharePoint herstellen, Exchange Online und Graphen mit dem folgenden -Scopes Sites.FullControl.All sowie sammeln die Gruppen-IDs von Klassenteams, die betroffen $rawGroups =@("b0a5905d-09ae-4605-8e12-94da93ecbe92","e0eec729-24ef-451e-b079-56d0baf4dfc9") # Convert to array of objects with .groupid $groups = $rawGroups | ForEach-Object { Get-UnifiedGroup -Identity $_ } $step = 0 #get das Konto des aktuell angemeldeten Benutzers, das als Websiteadministrator hinzugefügt $CUA = (get-mgcontext).account foreach ($group in $groups) { $step = $step + 1 Set-SPOUser -Site $group. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $true Write-Host "SiteCollectionAdmin added on $step of $($Groups.Count) Class Sites" } #Pause für 5 Minuten, bevor die Erstellung des allgemeinen Ordners Write-Host "5 Minuten anhalten, bevor Die Website hinzugefügt wirdCollectionAdmin to propagate" 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 "Verarbeitung von Berechtigungen für $step von $($Groups.Count)-Klassen" # Dies sind die AppIds für allgemeine Microsoft EDU-Apps $AppIds = @{ "8f348934-64be-4bb2-bc16-c54c96789f43"="EDU Assignments"; "22d27567-b3f0-4dc2-9ec2-46ed368ba538"="Lesezuweisungen"; "2d4d3d8e-2be3-4bef-9f87-7875a61c29de"="OneNote"; "c9a559d2-7aab-4f13-a6ed-e7e9c52aec87"="Microsoft Forms"; " 13291f5a-59ac-4c59-b0fa-d1632e8f3292"="EDU OneNote"; } # Anwenden der Berechtigungen auf die Gruppenwebsite $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 "Verarbeitete $($Groups.Count)-Klassen, removing sitecollectionadmin" $step = 0 foreach ($group in $groups) { $step = $step + 1 Set-SPOUser -Site $group. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $false Write-Host "SiteCollectionAdmin auf $step der $($Groups.Count)-Klassenwebsites entfernt" } |
|---|