Microsoft tüm ürün ve hizmetlerde güvenlik duruşunu geliştirirken, API işlevselliğinde, daha önce API'leri kullanarak Sınıf Not Defterleri ve Sınıf Ekipleri sağlamak için yalnızca uygulama izinlerine güvenen müşterileri etkileyebilecek değişiklikler yapılmıştır.
Not
Çoğu durumda, Microsoft 365 ile Öğrenci Bilgileri veya Yönetim Sistemlerindeki kullanıcı ve ad listesi verilerini eşitleme işlemini otomatikleştirmeye yardımcı olan ücretsiz bir hizmet olan School Data Sync'in (SDS) kullanılmasını öneririz. SDS, eğitim kurumunuzu, kullanıcılarınızı, sınıflarınızı ve rollerinizi yönetmenize, verilerinizi Microsoft Entra ID ve Microsoft 365 ile eşitlemenize yardımcı olur. Böylece Microsoft Teams, Eğitim için Intune, Exchange Online, SharePoint Online, OneNote Sınıf not defterlerini kullanabilir ve Çoklu Oturum Açma ile üçüncü taraf uygulamalarını etkinleştirebilirsiniz entegrasyon.
Desteklenen yöntemleri izleyerek, PowerShell ve Microsoft Graph kullanarak uygun ölçekte sınıflar ve not defterleri sağlamaya devam edebilirsiniz. Bu makalede adımlar özetlenir ve ilgili belgelerin bağlantıları sağlanır.
Önemli
Sınıfların büyük ölçekte sağlanması konusunda üçüncü taraf bir iş ortağıyla çalışıyorsanız, kendi başınıza adım atmadan önce lütfen bu makaleyi onlarla paylaşın.
Yeni sınıflar hazırlama
1. Seçenek (önerilir): Teams PowerShell'i kullanma
Uyarı
21 Ağustos 2025'ten önce, bu belgenin önceki bir sürümü, gerekli güncelleştirmeler yapılmadan önce Teams PowerShell aracılığıyla sağlama yapılmasını önerdi. Bu güncelleştirmeler artık tamamlanmıştır ve şu anda bu yaklaşımla devam edebilirsiniz. Anlayışınız için teşekkürler.
Sınıflar ve not defterleri için gerekli tüm kurulumu içeren Teams PowerShell'i kullanarak yeni sınıflar hazırlamak kolaydır. Aşağıdaki betikte istenen görünen adı özelleştirin ve yönetici olarak çalıştırın.
Önemli
Aşağıdaki betik için Microsoft Teams PowerShell 7.3.1 veya daha yeni bir sürümü kullanmanız gerekir.
Örnek komut dosyası
# Using the Teams PowerShell SDK
Install-Module -MicrosoftTeams -Force -AllowClobber
New-Team -DisplayName 'Test Class 20251208.4' -Template 'EDU_Class'
2. Seçenek: Microsoft Graph PowerShell'i kullanma
Teams PowerShell'e erişiminiz yoksa, Microsoft Graph'i kullanarak sınıfları büyük ölçekte sağlamayı keşfetmek isteyebilirsiniz. Aşağıdaki betiğin üst kısmındaki parametreleri uygun şekilde düzenleyin ve ardından betiği yönetici olarak çalıştırarak uygun ölçekte sınıflar ve not defterleri sağlayın:
Örnek komut dosyası
# 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
Sorun giderme: var olan sınıf sitelerine izin verme
Not
Bu yaklaşım, betiği çalıştıran kişinin burada açıklandığı gibi bir site yöneticisi olmasını da gerektirir. Aşağıdaki betikte, şu anda oturum açmış olan kullanıcıyı, sorun giderme gerektiren siteler için site yöneticisi olarak ekleme adımı yer almaktadır.
Sınıfları zaten sağladıysanız ve Sınıf Not Defteri veya Teams Ödevleri ile ilgili hatalar veya izin sorunları gözlemliyorsanız, rawGroups parametresini etkilenen sınıfların groupID'leriyle değiştirerek aşağıdaki betiği kullanarak sınıflarınızın site izinlerini güncelleştirebilirsiniz:
Örnek komut dosyası
#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 triggering 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"
}