Kako Microsoft poboljšava svoje sigurnosno držanje u svim proizvodima i uslugama, došlo je do promjena funkcionalnosti API-ja koje mogu utjecati na korisnike koji su se prethodno oslanjali na dozvole samo za aplikacije za dodjelu bilježnica za predmete i timova za predmete pomoću API-ja.

Napomena: U većini slučajeva preporučujemo korištenje sinkronizacije školskih podataka (SDS- a), besplatnog servisa koji pomaže automatizirati proces sinkronizacije korisničkih i roster podataka iz sustava Student Information or Management Systems sa sustavom Microsoft 365. SDS vam pomaže u upravljanju obrazovnom organizacijom, korisnicima, razredima i ulogama, sinkronizaciji podataka sa sustavom Microsoft Entra ID i Microsoft 365 da biste mogli koristiti Microsoft Teams, Intune za obrazovne ustanove, Exchange Online, SharePoint Online, bilježnice za predmete u programu OneNote i omogućiti aplikacije trećih strana uz Jedinstvena prijava integracija.

Nastavu i bilježnice i dalje možete dodjelljivati pomoću ljuske PowerShell i Microsoft Graph slijedeći podržane metode. U ovom su članku navedeni koraci i veze na relevantnu dokumentaciju.

Važno: Ako s partnerom treće strane radite na dodjeli razreda na razini, podijelite ovaj članak s njima prije nego što sami napravite korake.

Dodjela resursa novim razredima

1. mogućnost (preporučeno): korištenje ljuske Teams PowerShell

Upozorenje: Prije 21. kolovoza 2025. prethodna verzija ove dokumentacije preporučila je dodjelu resursa putem komponente Teams PowerShell prije nego što je izvršeno obavezno ažuriranje. Ta su ažuriranja sada dovršena i sada možete nastaviti s tim pristupom. Hvala na strpljenju.

Jednostavno je dodijeliti nove tečajeve pomoću komponente Teams PowerShell, koja će obuhvaćati sve potrebne postavke za nastavu i bilježnice. Jednostavno prilagodite željeni zaslonski naziv u sljedećoj skripti i pokrenite ga kao administrator.

Važno: Za sljedeću skriptu morate koristiti Microsoft Teams PowerShell verziju 7.3.1 ili noviju. 

Ogledna skripta

# Using the Teams PowerShell SDK
Install-Module -MicrosoftTeams -Force -AllowClobber
New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class'

2. mogućnost: korištenje komponente Microsoft Graph PowerShell

Ako nemate pristup ljuski Teams PowerShell, možda ćete htjeti istražiti tečajeve dodjele resursa na skali pomoću Microsoft Grapha. Po potrebi uredite parametre pri vrhu sljedeće skripte, a zatim pokrenite skriptu kao administrator da biste dodijelili razrede i bilježnice na skali:

Ogledna skripta

# 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​​​​​​​

Otklanjanje poteškoća: dodjeljivanje dozvola postojećim web-mjestima razreda

Napomena: Za taj će pristup također biti potrebno da je osoba koja pokreće skriptu administrator web-mjesta, kao što je opisano ovdje. Skripta u nastavku sadrži korak za dodavanje trenutno prijavljenog korisnika kao administratora web-mjesta za web-mjesta koja zahtijevaju otklanjanje poteškoća.

Ako ste već imali dodijeljene tečajeve i pratite pogreške ili probleme s dozvolama u bilježnici za predmete ili zadacima aplikacije Teams, dozvole web-mjesta za razrede možete ažurirati pomoću sljedeće skripte, zamjenjujući parametar rawGroups groupID-ovima zahvaćenih razreda:

Ogledna skripta

#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"
}

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.