W związku z tym, że firma Microsoft zwiększa swoją pozycję zabezpieczeń we wszystkich produktach i usługach, wprowadzono zmiany w funkcjach interfejsu API, które mogły mieć wpływ na klientów, którzy wcześniej korzystali z uprawnień tylko do aplikacji do inicjowania notesów zajęć i aplikacji Class Teams przy użyciu interfejsów API.

Uwaga: W większości przypadków zalecamy korzystanie z narzędzia School Data Sync(SDS), bezpłatnej usługi ułatwiającej zautomatyzowanie procesu synchronizacji danych użytkowników i wykazów z systemów informacji o uczniach lub systemach zarządzania z platformą Microsoft 365. Narzędzie SDS ułatwia zarządzanie organizacją edukacyjną, użytkownikami, zajęciami i rolami, synchronizowanie danych z Tożsamość Microsoft Entra i platformą Microsoft 365, dzięki czemu możesz korzystać z aplikacji Microsoft Teams, Intune dla instytucji edukacyjnych, Exchange Online, usługi SharePoint Online, notesów zajęć w programie OneNote i włączać aplikacje innych firm za pomocą integracja Logowanie jednokrotne.

Nadal możesz inicjować obsługę zajęć i notesów w skali przy użyciu programu PowerShell i programu Microsoft Graph, stosując obsługiwane metody. W tym artykule przedstawiono kroki i zamieszczono linki do odpowiedniej dokumentacji.

Ważne: Jeśli pracujesz z innym partnerem w zakresie inicjowania zajęć na skalę, przed samodzielnym podjęciem kroków udostępnij im ten artykuł.

Inicjowanie obsługi nowych zajęć

Opcja 1 (zalecana): Korzystanie z programu PowerShell dla aplikacji Teams

Ostrzeżenie: Przed 21 sierpnia 2025 r. wcześniejsza wersja tej dokumentacji zalecała inicjowanie obsługi za pośrednictwem programu Teams PowerShell przed wprowadzeniem wymaganej aktualizacji. Te aktualizacje są już gotowe i w tej chwili możesz kontynuować tę metodę. Dziękujemy za cierpliwość.

Inicjowanie nowych zajęć za pomocą programu Teams PowerShell jest proste, co będzie obejmować wszystkie niezbędne ustawienia dla zajęć i notesów. Wystarczy dostosować żądaną nazwę wyświetlaną w poniższym skrypcie i uruchomić ją jako administrator.

Ważne: Poniższy skrypt wymaga użycia programu Microsoft Teams PowerShell w wersji 7.3.1 lub nowszej. 

Przykładowy skrypt

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

Opcja 2: Używanie programu Microsoft Graph PowerShell

Jeśli nie masz dostępu do programu Teams PowerShell, warto zapoznać się z klasami inicjowania obsługi w skali przy użyciu funkcji Microsoft Graph. Odpowiednio edytuj parametry w górnej części następującego skryptu, a następnie uruchom skrypt jako administrator, aby zapewniać obsługę zajęć i notesów w skali:

Przykładowy skrypt

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

Rozwiązywanie problemów: udzielanie uprawnień istniejącym witrynom zajęć

Uwaga: Ta metoda będzie również wymagać, aby osoba uruchamiająca skrypt była administratorem witryny, jak opisano tutaj. Poniższy skrypt zawiera krok umożliwiający dodanie obecnie zalogowanego użytkownika jako administratora witryny do witryn wymagających rozwiązywania problemów.

Jeśli masz już inicjowane zajęcia i obserwujesz błędy lub problemy z uprawnieniami w notesie zajęć lub zadaniach aplikacji Teams, możesz zaktualizować uprawnienia witryny dla zajęć przy użyciu następującego skryptu, zastępując parametr rawGroups identyfikatorami grup odpowiednich klas:

Przykładowy skrypt

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

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.