Vzhledem k tomu, že Microsoft vylepšuje stav zabezpečení ve všech produktech a službách, došlo ke změnám funkcí rozhraní API, které můžou mít vliv na zákazníky, kteří se při zřizování poznámkových bloků předmětů a týmů předmětů pomocí rozhraní API dříve spoléhali na oprávnění jenom pro aplikace.
Poznámka: Ve většině případů doporučujeme používat službu School Data Sync(SDS), což je bezplatná služba, která pomáhá automatizovat proces synchronizace dat uživatelů a účastníků z informací o studentech nebo systémů pro správu s Microsoftem 365. SDS vám pomůže spravovat vzdělávací organizaci, uživatele, předměty a role, synchronizovat data s Microsoft Entra ID a Microsoft 365, abyste mohli používat Microsoft Teams, Intune for Education, Exchange Online, SharePoint Online, onenotové poznámkové bloky předmětů a povolovat aplikace třetích stran pomocí Jednotné přihlašování integrace.
Třídy a poznámkové bloky můžete pořád zřizovat ve velkém měřítku pomocí PowerShellu a Microsoft Graphu pomocí podporovaných metod. Tento článek popisuje kroky a obsahuje odkazy na příslušnou dokumentaci.
Důležité informace: Pokud na zřizování tříd ve velkém spolupracujete s partnerem třetí strany, podělte se s nimi o tento článek, než budete podnikat vlastní kroky.
Zřizování nových tříd
Možnost 1 (doporučeno): Použití Prostředí Teams PowerShell
Upozornění: Před 21. srpnem 2025 byla před provedením požadované aktualizace provedena předchozí verze této dokumentace doporučená zřizování prostřednictvím Prostředí Teams PowerShell. Tyto aktualizace jsou nyní dokončené a v tuto chvíli můžete pokračovat v tomto přístupu. Děkujeme za vaši trpělivost.
Zřízení nových tříd pomocí Teams PowerShellu, které bude obsahovat veškeré potřebné nastavení pro předměty a poznámkové bloky, je jednoduché. Jednoduše upravte požadovaný zobrazovaný název v následujícím skriptu a spusťte ho jako správce.
Ukázkový skript
# Using the Teams PowerShell SDK
Install-Module -MicrosoftTeams -Force -AllowClobber
New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class'
|
Možnost 2: Použití Prostředí Microsoft Graph PowerShell
Pokud nemáte přístup k Prostředí Teams PowerShell, můžete prozkoumat třídy zřizování ve velkém měřítku pomocí Microsoft Graphu. Podle potřeby upravte parametry v horní části následujícího skriptu a pak skript spusťte jako správce, který zřídí třídy a poznámkové bloky ve velkém měřítku:
Ukázkový skript
# 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
|
Řešení potíží: Udělení oprávnění existujícím webům tříd
Poznámka: Tento přístup bude také vyžadovat, aby osoba, která skript spouští, byla správcem webu, jak je popsáno tady. Následující skript obsahuje krok pro přidání aktuálně přihlášeného uživatele jako správce webu pro weby, které vyžadují řešení potíží.
Pokud jste již zřídili třídy a dochází k selháním nebo problémům s oprávněními u přiřazení poznámkového bloku předmětu nebo Teams, můžete aktualizovat oprávnění webu pro své třídy pomocí následujícího skriptu a nahradit parametr rawGroups identifikátory groupID ovlivněných tříd:
Ukázkový skript
#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"
}
|