Vì Microsoft cải thiện tư thế bảo mật của mình trên tất cả các sản phẩm và dịch vụ, đã có những thay đổi đối với chức năng API có thể ảnh hưởng đến những khách hàng trước đây dựa vào quyền chỉ dùng ứng dụng để cung cấp Class Notebook và Class Teams bằng cách sử dụng API.
Lưu ý: Trong hầu hết các trường hợp, chúng tôi khuyên bạn nên sử dụng Đồng bộ Dữ liệu Trường học (SDS), một dịch vụ miễn phí giúp tự động hóa quy trình đồng bộ hóa dữ liệu người dùng và danh sách người dùng từ Thông tin Học viên hoặc Hệ thống Quản lý với Microsoft 365. SDS giúp bạn quản lý tổ chức giáo dục, người dùng, lớp học và vai trò của mình, đồng bộ hóa dữ liệu với Microsoft Entra ID và Microsoft 365, để bạn có thể sử dụng Microsoft Teams, Intune for Education, Exchange Online, SharePoint Online, OneNote Class và bật các ứng dụng bên thứ ba với Đăng nhập một lần Tích hợp.
Bạn vẫn có thể cung cấp lớp học và sổ ghi chép theo tỷ lệ bằng PowerShell và Microsoft Graph bằng cách làm theo các phương pháp được hỗ trợ. Bài viết này trình bày các bước và cung cấp liên kết đến tài liệu liên quan.
Quan trọng: Nếu bạn đang làm việc với đối tác bên thứ ba về việc cung cấp lớp học theo quy mô lớn, vui lòng chia sẻ bài viết này với họ trước khi tự thực hiện các bước.
Cung cấp lớp học mới
Tùy chọn 1 (được khuyến nghị): Sử dụng Teams PowerShell
Cảnh báo: Trước ngày 21 tháng 8 năm 2025, một phiên bản trước của tài liệu này đề xuất cung cấp thông qua Teams PowerShell trước khi thực hiện cập nhật bắt buộc. Các bản cập nhật này hiện đã hoàn tất và bạn có thể tiếp tục với phương pháp này tại thời điểm này. Cảm ơn bạn đã kiên nhẫn của bạn.
Việc cung cấp các lớp học mới bằng Teams PowerShell rất đơn giản, bao gồm tất cả các thiết lập cần thiết cho các lớp học và sổ ghi chép. Chỉ cần tùy chỉnh tên hiển thị mong muốn trong tập lệnh sau đây và chạy nó với tư cách người quản trị.
Tập lệnh mẫu
# Using the Teams PowerShell SDK
Install-Module -MicrosoftTeams -Force -AllowClobber
New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class'
|
Tùy chọn 2: Sử dụng Microsoft Graph PowerShell
Nếu bạn không có quyền truy nhập vào Teams PowerShell, bạn có thể muốn khám phá các lớp cung cấp theo tỷ lệ bằng Microsoft Graph. Chỉnh sửa các tham số ở đầu tập lệnh sau đây cho phù hợp, rồi chạy tập lệnh với tư cách người quản trị để cung cấp lớp học và sổ tay theo tỷ lệ:
Tập lệnh mẫu
# 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
|
Khắc phục sự cố: cấp quyền cho các site lớp học hiện có
Lưu ý: Phương pháp này cũng sẽ yêu cầu người chạy tập lệnh là người quản trị site, như được mô tả ở đây. Tập lệnh dưới đây bao gồm một bước để thêm người dùng hiện đang đăng nhập với tư cách là người quản trị trang web cho các trang web yêu cầu khắc phục sự cố.
Nếu bạn đã cung cấp lớp học và đang quan sát thấy lỗi hoặc sự cố về quyền với Class Notebook hoặc Nhiệm vụ Teams, bạn có thể cập nhật quyền site cho các lớp học của bạn bằng cách sử dụng tập lệnh sau đây, thay thế tham số rawGroups bằng groupID của các lớp bị ảnh hưởng:
Tập lệnh mẫu
#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"
}
|