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 Data Sync(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

# Using the 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

# Using the 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]|[ ]', '' # Replace this mail alias with a preferred generation method
$OwnerId = "000-000-00000-000000-000" # Replace this with the Owner's GUID
# ------------

# Create a new M365 Group
$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 will need to connect to SharePoint, Exchange Online, and Graph with the following -Scopes Sites.FullControl.All, as well as collect the groupIDs of Class Teams affected
$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 the currently logged in user's account to add as a site admin
$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 for 5 minutes before tiggering the General Folder creation
Write-Host "Pausing for 5 Minutes before adding perms to allow SiteCollectionAdmin 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 "Processing permissions on $step of $($Groups.Count) Classes"
 # These are the AppIds for common Microsoft EDU Apps
 $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";
 }

# Apply the permissions to the group site
$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 in $groups) {
 $step = $step + 1
 Set-SPOUser -Site $group.SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $false
 Write-Host "SiteCollectionAdmin removed on $step of $($Groups.Count) Class Sites"
}

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.