Naarmate Microsoft zijn beveiligingspostuur voor alle producten en services verbetert, zijn er wijzigingen aangebracht in de API-functionaliteit die van invloed kunnen zijn op klanten die eerder afhankelijk waren van alleen-app-machtigingen voor het inrichten van Class Notebooks en Class Teams met behulp van API's.
Opmerking: In de meeste gevallen raden we u aan schoolgegevenssynchronisatie(SDS) te gebruiken, een gratis service die helpt bij het automatiseren van het proces van het synchroniseren van gebruikers- en roostergegevens van studentgegevens of -beheersystemen met Microsoft 365. MET SDS kunt u uw onderwijsorganisatie, gebruikers, klassen en rollen beheren, uw gegevens synchroniseren met Microsoft Entra ID en Microsoft 365, zodat u Microsoft Teams, Intune for Education, Exchange Online, SharePoint Online en OneNote Class-notitieblokken kunt gebruiken en apps van derden kunt inschakelen met Single sign-on integratie.
U kunt klassen en notebooks nog steeds op schaal inrichten met behulp van PowerShell en Microsoft Graph door de ondersteunde methoden te volgen. In dit artikel worden de stappen beschreven en vindt u koppelingen naar relevante documentatie.
Belangrijk: Als u met een externe partner werkt aan het op schaal inrichten van klassen, deelt u dit artikel met hen voordat u zelf stappen onderneemt.
Nieuwe klassen inrichten
Optie 1 (aanbevolen): Teams PowerShell gebruiken
Waarschuwing: Vóór 21 augustus 2025 werd in een eerdere versie van deze documentatie het inrichten via Teams PowerShell aanbevolen voordat de vereiste update was uitgevoerd. Deze updates zijn nu voltooid en u kunt op dit moment doorgaan met deze aanpak. Hartelijk dank voor uw geduld.
Het is eenvoudig om nieuwe klassen in te richten met Behulp van Teams PowerShell, waarin alle benodigde instellingen voor klassen en notebooks worden opgenomen. Pas de gewenste weergavenaam in het volgende script aan en voer deze uit als beheerder.
Voorbeeldscript
# Using the Teams PowerShell SDK
Install-Module -MicrosoftTeams -Force -AllowClobber
New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class'
|
Optie 2: Microsoft Graph PowerShell gebruiken
Als u geen toegang hebt tot Teams PowerShell, kunt u de inrichtingsklassen op schaal verkennen met behulp van Microsoft Graph. Bewerk waar nodig de parameters boven aan het volgende script en voer het script vervolgens uit als beheerder om klassen en notebooks op schaal in te richten:
Voorbeeldscript
# 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
|
Problemen oplossen: machtigingen verlenen aan bestaande klassesites
Opmerking: Deze aanpak vereist ook dat de persoon die het script uitvoert een sitebeheerder is, zoals hier wordt beschreven. Het onderstaande script bevat een stap voor het toevoegen van de momenteel aangemelde gebruiker als sitebeheerder voor de sites waarvoor probleemoplossing vereist is.
Als u klassen al hebt ingericht en fouten of machtigingsproblemen ondervindt met Klasnotitieblok of Teams-toewijzingen, kunt u sitemachtigingen voor uw klassen bijwerken met behulp van het volgende script, waarbij u de parameter rawGroups vervangt door de groupID's van de betrokken klassen:
Voorbeeldscript
#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"
}
|