Eftersom Microsoft förbättrar sin säkerhetsstatus för alla produkter och tjänster har API-funktionerna ändrats som kan påverka kunder som tidigare förlitade sig på appbehörigheter för att tillhandahålla klassanteckningsböcker och klassteam med API:er.
Obs
I de flesta fall rekommenderar vi att du använder School Data Sync (SDS), en kostnadsfri tjänst som hjälper till att automatisera processen med att synkronisera användar- och deltagardata från studentinformation eller hanteringssystem med Microsoft 365. Med SDS kan du hantera din utbildningsorganisation, användare, klasser och roller, synkronisera dina data med Microsoft Entra ID och Microsoft 365, så att du kan använda Microsoft Teams, Intune för utbildning, Exchange Online, SharePoint Online, OneNote-klassanteckningsböcker och aktivera appar från tredje part med Enkel inloggning Integration.
Du kan fortfarande tillhandahålla klasser och anteckningsböcker i skala med PowerShell och Microsoft Graph genom att följa de metoder som stöds. Den här artikeln beskriver stegen och innehåller länkar till relevant dokumentation.
Viktigt!
Om du arbetar tillsammans med en tredjepartspartner om skalenlig etablering av klasser delar du den här artikeln med dem innan du vidtar åtgärder på egen hand.
Etablera nya klasser
Alternativ 1 (rekommenderas): Använda Teams PowerShell
Varning!
Före 21 augusti 2025 rekommenderade en tidigare version av den här dokumentationen etablering via Teams PowerShell innan den nödvändiga uppdateringen hade gjorts. De här uppdateringarna är nu slutförda och du kan fortsätta med den här metoden just nu. Tack för ditt tålamod.
Det är enkelt att etablera nya klasser med Teams PowerShell, som innehåller alla nödvändiga inställningar för klasser och anteckningsböcker. Anpassa önskat visningsnamn i följande skript och kör det som administratör.
Viktigt!
Följande skript kräver att du använder Microsoft Teams PowerShell version 7.3.1 eller senare.
Exempelskript
| # Använda Teams PowerShell SDK Install-Module -MicrosoftTeams -Force -AllowClobber New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class' |
|---|
Alternativ 2: Använda Microsoft Graph PowerShell
Om du inte har tillgång till Teams PowerShell kanske du vill utforska etableringsklasser i stor skala med hjälp av Microsoft Graph. Redigera parametrarna högst upp i följande skript efter behov och kör sedan skriptet som administratör för att tillhandahålla klasser och anteckningsböcker i skala:
Exempelskript
| # Använda 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]|[ ]', '' # Ersätt det här e-postaliaset med önskad metod för generering $OwnerId = "000-000-00000-000" # Ersätt detta med ägarens GUID # ------------ # Skapa en ny M365-grupp $CreateGroupBody = @" { "beskrivning": "$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" ], "synlighet": "DoldMedlemskap", "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 |
|---|
Felsök: bevilja behörigheter till befintliga klasswebbplatser
Obs
Den här metoden kräver också att personen som kör skriptet är webbplatsadministratör enligt beskrivningen här. Skriptet nedan innehåller ett steg för att lägga till den inloggade användaren som webbplatsadministratör för webbplatser som kräver felsökning.
Om du redan har etablerade klasser och observerar fel eller behörighetsproblem med Klassanteckningsbok eller Teams-uppgifter kan du uppdatera webbplatsbehörigheter för dina klasser med hjälp av följande skript och ersätta rawGroups-parametern med grupp-ID:na för de berörda klasserna:
Exempelskript
| #You måste ansluta till SharePoint, Exchange Online, och Graph med följande -Scopes Sites.FullControl.All, samt samla in grupp-ID:n för klassteam som påverkas $rawGroups =@("b0a5905d-09ae-4605-8e12-94da93ecbe92","e0eec729-24ef-451e-b079-56d0baf4dfc9") # Konvertera till matris med objekt med .groupid $groups = $rawGroups | ForEach-Object { Get-UnifiedGroup -Identity $_ } $step = 0 #get den inloggade användarens konto för att lägga till som webbplatsadministratör $CUA = (get-mgcontext).account foreach ($group i $groups) { $step = $step + 1 Set-SPOUser -Site $group. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $true Write-Host "SiteCollectionAdmin lade till på $step av $($Groups.Count) Klasswebbplatser" } #Pause i 5 minuter innan den allmänna mappskapandet Write-Host "Pausa i 5 minuter innan du lägger till perms för att tillåta 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 "Bearbetar behörigheter för $step av $($Groups.Count) Klasser" # Det här är AppId för vanliga Microsoft EDU Appar $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"; } # Använd behörigheterna för gruppwebbplatsen $AppIds.Keys | %{ $AppId = $_ $Name = $AppIds[$_] $Body = @" { "roller": ["fullcontrol"], "grantedToIdentities": [{ "application": { "id": "$AppId", "displayName": "$Name" } }] } "@ Invoke-MgGraphRequest -Method POST -Uri "$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" } |
|---|