מאחר ש- Microsoft משפרת את יציבת האבטחה שלה בכל המוצרים והשירותים, בוצעו שינויים בפונקציונליות ה- API שעשויים להשפיע על לקוחות שהסתתפו בעבר בהרשאות של אפליקציות בלבד להקצאת מחברות כיתה ו-Class Teams באמצעות ממשקי API.
הערה: ברוב המקרים, מומלץ להשתמש ב- School Data Sync(SDS), שירות ללא תשלום שמסייע להפוך לאוטומטי את תהליך הסינכרון של נתוני המשתמשים ולוח הפעילויות מ-Student Information or Management Systems עם Microsoft 365. SDS עוזר לך לנהל את הארגון החינוכי, המשתמשים, הכיתות ותפקידים שלך, לסנכרן את הנתונים שלך עם מזהה Microsoft Entra ו- Microsoft 365, כך שתוכל להשתמש ב- Microsoft Teams, Intune למגזר החינוך, Exchange Online, SharePoint Online, מחברות כיתה של OneNote ולאפשר אפליקציות של ספקים חיצוניים עם שילוב כניסה יחידה.
עדיין תוכל להקצות מחלקות ומחברות בקנה מידה גדול באמצעות PowerShell ו- Microsoft Graph על-ידי ביצוע השיטות הנתמכות. מאמר זה מתאר את השלבים ומספק קישורים לתיעוד רלוונטי.
חשוב: אם אתה עובד עם שותף חיצוני בהקצאת כיתות בקנה מידה רחב, שתף מאמר זה איתם לפני שתנהל שלבים בעצמך.
הקצאת משאבים למחלקות חדשות
אפשרות 1 (מומלץ): שימוש ב- PowerShell של Teams
אזהרה: לפני ה- 21 באוגוסט 2025, מומלץ להקצות משאבים לגירסה קודמת של תיעוד זה באמצעות Teams PowerShell לפני שבוצע עדכון נדרש. עדכונים אלה הושלמו כעת, ובאפשרותך להמשיך בגישה זו בשלב זה. תודה על הסבלנות.
קל להקצות כיתות חדשות באמצעות Teams PowerShell, אשר יכללו את כל ההגדרה הדרושה עבור כיתות ומחברות. פשוט התאם אישית את שם התצוגה הרצוי בקובץ ה- Script הבא והפעל אותו כמנהל מערכת.
קובץ Script לדוגמה
# 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. ערוך את הפרמטרים בחלק העליון של קובץ ה- Script הבא לפי הצורך ולאחר מכן הפעל את קובץ ה- Script כמנהל מערכת כדי להקצות מחלקות ומחברות בקנה מידה רחב:
קובץ Script לדוגמה
# 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
|
פתרון בעיות: הענקת הרשאות לאתרי כיתה קיימים
הערה: גישה זו תדרוש גם מהאדם שמפעיל את קובץ ה- Script להיות מנהל אתר, כמתואר כאן. קובץ ה- Script שלהלן כולל שלב להוספת המשתמש המחובר כעת כמנהל אתר עבור האתרים הדורשים פתרון בעיות.
אם כבר הקצאת משאבים לכיתות ואתה צופה בכשלים או בבעיות הרשאה במחברת כיתה או במטלות של Teams, באפשרותך לעדכן הרשאות אתר עבור הכיתות שלך באמצעות קובץ ה- Script הבא, ולהחליף את הפרמטר rawGroups ב- groupIDs של הכיתות המושפעות:
קובץ Script לדוגמה
#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"
}
|