Kako Microsoft poboljšava svoju bezbednosnu poziciju u svim proizvodima i uslugama, došlo je do promena u API funkcionalnosti koje mogu da utiču na klijente koji su se ranije oslanjali na dozvole samo za aplikacije kako bi obezbedili beležnice za razred i timove razreda pomoću API-ja.
Napomena
U većini slučajeva preporučujemo korišćenje usluge School Data Sync (SDS), besplatne usluge koja pomaže u automatizaciji procesa sinhronizacije podataka o korisnicima i spiskovima iz usluge Informacije o studentima ili sistema za upravljanje sa uslugom Microsoft 365. SDS vam pomaže da upravljate obrazovnom organizacijom, korisnicima, klasama i ulogama, sinhronizujete podatke sa Microsoft Entra ID-om i uslugom Microsoft 365 kako biste mogli da koristite Microsoft Teams, Intune for Education, Exchange Online, SharePoint Online, OneNote beležnice za razred i omogućite aplikacije nezavisnih proizvođača pomoću Jedinstveno prijavljivanje integracija.
I dalje možete da obezbedite razrede i beležnice u velikoj meri pomoću programa PowerShell i Microsoft Graph tako što ćete pratiti podržane metode. Ovaj članak opisuje korake i obezbeđuje veze ka relevantnoj dokumentaciji.
Važno
Ako radite sa partnerom nezavisnog proizvođača na prilagođavanju obezbeđivanja časova, podelite ovaj članak sa njim pre nego što sami preduzmete korake.
Obezbeđivanje novih klasa
Opcija 1 (preporučeno): Korišćenje programa Teams PowerShell
Upozorenje
Pre 21. avgusta 2025, prethodna verzija ove dokumentacije preporučuje dodeljivanje privilegija putem programa Teams PowerShell pre nego što se izvrše neophodna ažuriranja. Ova ažuriranja su sada dovršena i trenutno možete da nastavite sa ovim pristupom. Hvala vam na strpljenju.
Obezbeđivanje novih razreda je jednostavno pomoću programa Teams PowerShell, koji će uključivati sva potrebna podešavanja za razrede i beležnice. Jednostavno prilagodite željeno ime za prikaz u sledećoj skripti i pokrenite je kao administrator.
Važno
Sledeća skripta zahteva da koristite Microsoft Teams PowerShell verziju 7.3.1 ili novije.
Uzorak skripte
# Using the Teams PowerShell SDK
Install-Module -MicrosoftTeams -Force -AllowClobber
New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class'
2. opcija: Korišćenje programa Microsoft Graph PowerShell
Ako nemate pristup programu Teams PowerShell, možda bi trebalo da istražite obezbeđivanje klasa u razmeri pomoću programa Microsoft Graph. Po potrebi uredite parametre na vrhu sledeće skripte, a zatim pokrenite skriptu kao administrator da biste obezbedili razrede i beležnice u razmeri:
Uzorak skripte
# 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
Rešavanje problema: dodela dozvola postojećim lokacijama razreda
Napomena
Ovaj pristup će takođe zahtevati da osoba koja pokreće skriptu bude administrator lokacije, kao što je opisano ovde. Dolenavedena skripta uključuje korak za dodavanje trenutno prijavljenog korisnika kao administratora sajta za sajtove koji zahtevaju rešavanje problema.
Ako ste već obezbedili razrede i uočavate greške ili probleme sa dozvolama u vezi sa beležnicom za razred ili Teams dodelama, možete da ažurirate dozvole lokacije za razred pomoću sledeće skripte i zamenite parametar rawGroups ID-ovima grupe klasa na koje se odnosi:
Uzorak skripte
#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 triggering 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"
}