Оскільки корпорація Майкрософт підвищує безпеку в усіх продуктах і службах, на клієнтів, які раніше покладалися на дозволи лише для програм, на підготовку Блокнотів для класу та Class Teams за допомогою інтерфейсів API, внесено зміни .

Примітка.: У більшості випадків ми радимо використовувати School Data Sync(SDS) – безкоштовну службу, яка допомагає автоматизувати процес синхронізації даних користувачів і списків із системи керування інформацією про учнів і студентів із Microsoft 365. SDS дає змогу керувати навчальною організацією, користувачами, класами та ролями, синхронізувати дані з Ідентифікатор Microsoft Entra та Microsoft 365, щоб ви могли використовувати Microsoft Teams, Intune для навчальних закладів, Exchange Online, SharePoint Online, блокноти OneNote для класу та використовувати сторонні програми з Єдиний вхід інтеграція.

Ви все ще можете підготувати класи та блокноти в масштабі за допомогою PowerShell і Microsoft Graph за допомогою наведених нижче методів. У цій статті описано кроки та наведено посилання на відповідну документацію.

Увага!: Якщо ви працюєте зі стороннім партнером над масштабним підготовкою класів, поділіться цією статтею з ними, перш ніж робити кроки самостійно.

Підготовка нових класів

Варіант 1 (рекомендовано): використання Teams PowerShell

Попередження!: До 21 серпня 2025 року попередня версія цієї документації рекомендувала підготуватися за допомогою Teams PowerShell до того, як було зроблено необхідне оновлення. Ці оновлення вже завершені, і ви можете перейти до цього підходу в цей час. Дякуємо за терпіння.

Легко підготувати нові класи за допомогою Teams PowerShell, яка включатиме всі необхідні налаштування для класів і блокнотів. Просто настройте потрібне коротке ім'я в наведеному нижче сценарії та запустіть його як адміністратор.

Увага!: Для виконання наведеного нижче сценарію потрібно використовувати Microsoft Teams PowerShell версії 7.3.1 або новішої. 

Зразок сценарію

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

Варіант 2. Використання Microsoft Graph PowerShell

Якщо у вас немає доступу до Teams PowerShell, радимо ознайомитися з класами підготовки в масштабі за допомогою Microsoft Graph. Відредагуйте параметри у верхній частині наведеного нижче сценарію, а потім запустіть сценарій із правами адміністратора, щоб підготувати класи та блокноти в масштабі:

Зразок сценарію

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

Виправлення неполадок: надання дозволів наявним сайтам класів

Примітка.: Цей підхід також вимагатиме, щоб особа, яка виконує сценарій, була адміністратором сайту, як описано тут. Сценарій нижче містить крок, щоб додати користувача, який увійшов у систему, як адміністратора сайту для сайтів, для яких потрібна виправлення неполадок.

Якщо ви вже підготовлені класи та спостерігаєте помилки або проблеми з дозволами в Блокноті для класу або завданнях Teams, ви можете оновити дозволи сайту для класів за допомогою наведеного нижче сценарію, замінивши параметр rawGroups на ідентифікатори groupID відповідних класів.

Зразок сценарію

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

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.