Klasy inicjowania obsługi administracyjnej w skali przy użyciu programu PowerShell i programu Microsoft Graph

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 Microsoft Entra ID 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 oraz włączać aplikacje innych firm za pomocą Logowanie jednokrotne Integracji.

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ęć

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

# Korzystanie z 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 interfejs interfejs Graph API Install-Module Microsoft.Graph -AllowClobber -Force # PARAMETERS $Name = "Test Class 20251208.3" $Description = "Klasa testowa" $Mail = $Name -replace '[^a-zA-Z0-9\s]|[ ]', '' # Zamień ten alias poczty na preferowaną metodę generowania $OwnerId = "000-000-00000-00000-000" # Zamień to na identyfikator GUID właściciela # ------------ # Utwórz nową grupę M365 $CreateGroupBody = @" { "opis": "$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.bindhttps://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 będzie musiał nawiązać połączenie z programem SharePoint, Exchange Online i Graph z następującymi zakresami Sites.FullControl.All, a także zbieraj identyfikatory grup w zespołach zajęć, na które ma to wpływ $rawGroups =@("b0a5905d-09ae-4605-8e12-94da93ecbe92","e0eec729-24ef-451e-b079-56d0baf4dfc9") # Konwertuj na tablicę obiektów z grupowanymi $groups = $rawGroups | ForEach-Object { Get-UnifiedGroup -Identity $_ } $step = 0 #get obecnie zalogowanego konta użytkownika w celu dodania go jako administratora witryny $CUA = (get-mgcontext).account foreach ($group w $groups) { $step = $step + 1 Set-SPOUser - $group witryny. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $true Write-Host "SiteCollectionAdmin added on $step of $($Groups.Count) Class Sites" } #Pause przez 5 minut, a następnie tiggering General Folder creation Write-Host "Wstrzymanie na 5 minut przed dodaniem perm , aby zezwolić na propagację SiteCollectionAdmin" 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" #To są identyfikatory aplikacji dla typowych aplikacji Microsoft ED Aplikacje $AppIds = @{ "8f348934-64be-4bb2-bc16-c54c96789f43"="Zadania EDU"; "22d27567-b3f0-4dc2-9ec2-46ed368ba538"="Czytanie zadań"; "2d4d3d8e-2be3-4bef-9f87-7875a61c29de"="OneNote"; "c9a559d2-7aab-4f13-a6ed-e7e9c52aec87"="Microsoft Forms"; " 13291f5a-59ac-4c59-b0fa-d1632e8f3292"="EDU OneNote"; } # Zastosuj uprawnienia do witryny grupy $AppIds.Keys | %{ $AppId = $_ $Name = $AppIds[$_] $Body = @" { "role": ["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 "Przetworzone zajęcia $($Groups.Count), usuwanie sitecollectionadmin" $step = 0 foreach ($group w $groups) { $step = $step + 1 Set-SPOUser -Site $group. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $false Write-Host "SiteCollectionAdmin removed on $step of $($Groups.Count) Class Sites" }