Karena Microsoft menyempurnakan postur keamanannya di semua produk dan layanan, terdapat perubahan fungsi api yang dapat memengaruhi pelanggan yang sebelumnya mengandalkan izin aplikasi saja untuk menyediakan Buku Catatan Kelas dan Tim Kelas menggunakan API.

Catatan: Biasanya, sebaiknya gunakan Sinkronisasi Data Sekolah(SDS), layanan gratis yang membantu mengotomatiskan proses sinkronisasi data pengguna dan daftar nama dari Sistem Manajemen atau Informasi Siswa dengan Microsoft 365. SDS membantu Anda mengelola organisasi pendidikan, pengguna, kelas, dan peran, menyinkronkan data dengan Microsoft Entra ID dan Microsoft 365, sehingga Anda dapat menggunakan Microsoft Teams, Intune untuk Pendidikan, Exchange Online, SharePoint Online, buku catatan Kelas OneNote, dan mengaktifkan aplikasi pihak ketiga dengan Sistem Masuk Tunggal integrasi.

Anda masih dapat menyediakan kelas dan buku catatan sesuai skala menggunakan PowerShell dan Microsoft Graph dengan mengikuti metode yang didukung. Artikel ini menjelaskan langkah-langkah dan menyediakan link ke dokumentasi yang relevan.

Penting: Jika Anda bekerja dengan mitra pihak ketiga dalam penyediaan kelas skala besar, silakan bagikan artikel ini dengan mereka sebelum mengambil langkah Anda sendiri.

Menyediakan kelas baru

Opsi 1 (disarankan): Menggunakan Teams PowerShell

Peringatan: Sebelum 21 Agustus 2025, versi sebelumnya dari dokumentasi ini merekomendasikan penyediaan melalui Teams PowerShell sebelum pembaruan yang diperlukan telah dibuat. Pembaruan ini kini telah selesai, dan Anda dapat melanjutkan pendekatan ini saat ini. Terima kasih atas kesabaran anda.

Sangat mudah untuk menyediakan kelas baru menggunakan Teams PowerShell, yang akan menyertakan semua penyiapan yang diperlukan untuk kelas dan buku catatan. Cukup kustomisasi nama tampilan yang diinginkan dalam skrip berikut ini dan jalankan sebagai administrator.

Penting: Skrip berikut ini mengharuskan Anda menggunakan Microsoft Teams PowerShell versi 7.3.1 atau yang lebih baru. 

Contoh skrip

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

Opsi 2: Menggunakan Microsoft Graph PowerShell

Jika tidak memiliki akses ke Teams PowerShell, Anda mungkin ingin menjelajahi kelas penyediaan dalam skala besar menggunakan Microsoft Graph. Edit parameter di bagian atas skrip berikut ini sebagaimana mestinya, lalu jalankan skrip sebagai administrator untuk menyediakan kelas dan buku catatan dalam skala besar:

Contoh skrip

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

Pemecahan masalah: memberikan izin ke situs kelas yang sudah ada

Catatan: Pendekatan ini juga akan mengharuskan orang yang menjalankan skrip adalah admin situs, seperti yang dijelaskan di sini. Skrip di bawah ini menyertakan langkah untuk menambahkan pengguna yang saat ini masuk sebagai admin situs untuk situs yang memerlukan pemecahan masalah.

Jika anda telah menyediakan kelas dan mengamati kegagalan atau masalah izin dengan Buku Catatan Kelas atau Tugas Teams, Anda bisa memperbarui izin situs untuk kelas Anda menggunakan skrip berikut ini, mengganti parameter rawGroups dengan groupIDs dari kelas yang terpengaruh:

Contoh skrip

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

Perlu bantuan lainnya?

Ingin opsi lainnya?

Jelajahi manfaat langganan, telusuri kursus pelatihan, pelajari cara mengamankan perangkat Anda, dan banyak lagi.