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.
Exempelskript
# Using the 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
# 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
|
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 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"
}
|