Da Microsoft forbedrer sin sikkerhedsstilling på tværs af alle produkter og tjenester, er der sket ændringer af API-funktionalitet, der kan påvirke kunder, der tidligere har brugt tilladelser, der kun gælder for apps, til at klargøre klassenotesbøger og klasseteams ved hjælp af API'er.
Bemærk!: I de fleste tilfælde anbefaler vi, at du bruger School Data Sync(SDS), som er en gratis tjeneste, der hjælper med at automatisere processen med synkronisering af bruger- og listedata fra Elevoplysninger eller Administrationssystemer med Microsoft 365. SDS hjælper dig med at administrere din uddannelsesorganisation, brugere, klasser og roller, synkronisere dine data med Microsoft Entra ID og Microsoft 365, så du kan bruge Microsoft Teams, Intune til uddannelse, Exchange Online, SharePoint Online, OneNote-klassenotesbøger og aktivere tredjepartsapps med Enkeltlogon integration.
Du kan stadig klargøre klasser og notesbøger i stor skala ved hjælp af PowerShell og Microsoft Graph ved at følge understøttede metoder. Denne artikel beskriver trinnene og indeholder links til relevant dokumentation.
Vigtigt!: Hvis du arbejder med en tredjepartspartner om klargøring af klasser i det hele taget, skal du dele denne artikel med dem, før du selv tager skridt.
Klargøring af nye klasser
Mulighed 1 (anbefales): Brug af Teams PowerShell
Advarsel!: Før d. 21. august 2025 anbefalede en tidligere version af denne dokumentation klargøring via Teams PowerShell, før den krævede opdatering var foretaget. Disse opdateringer er nu fuldført, og du kan fortsætte med denne fremgangsmåde på nuværende tidspunkt. Tak for din tålmodighed.
Det er nemt at klargøre nye klasser ved hjælp af Teams PowerShell, som omfatter al nødvendig konfiguration for klasser og notesbøger. Du skal blot tilpasse det ønskede viste navn i følgende script og køre det som administrator.
Eksempelscript
# Using the Teams PowerShell SDK
Install-Module -MicrosoftTeams -Force -AllowClobber
New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class'
|
Mulighed 2: Brug af Microsoft Graph PowerShell
Hvis du ikke har adgang til Teams PowerShell, kan det være en god ide at udforske klargøringsklasser på skala ved hjælp af Microsoft Graph. Rediger parametrene øverst i følgende script efter behov, og kør derefter scriptet som administrator for at klargøre klasser og notesbøger på skala:
Eksempelscript
# 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
|
Fejlfinding: Tildeling af tilladelser til eksisterende klassewebsteder
Bemærk!: Denne fremgangsmåde kræver også, at den person, der kører scriptet, er webstedsadministrator, som beskrevet her. Scriptet nedenfor indeholder et trin til at tilføje den bruger, der i øjeblikket er logget på som webstedsadministrator for de websteder, der kræver fejlfinding.
Hvis du allerede har klargjort klasser og oplever fejl eller tilladelsesproblemer med Klassenotesbog eller Teams-opgaver, kan du opdatere webstedstilladelser for dine klasser ved hjælp af følgende script og erstatte rawGroups-parameteren med groupID'erne for de berørte klasser:
Eksempelscript
#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"
}
|