Klargjør klasser i stor skala ved hjelp av PowerShell og Microsoft Graph

Etter hvert som Microsoft forbedrer sikkerhetsstillingen på tvers av alle produkter og tjenester, har det vært endringer i API-funksjonalitet som kan påvirke kunder som tidligere var avhengige av bare app-tillatelser for å klargjøre klassenotatblokker og klasseteam ved hjelp av API-er.

Obs!

I de fleste tilfeller anbefaler vi at du bruker School Data Sync (SDS), en gratis tjeneste som bidrar til å automatisere prosessen med å synkronisere bruker- og listedata fra studentinformasjons- eller administrasjonssystemer med Microsoft 365. SDS hjelper deg med å administrere utdanningsorganisasjonen, brukerne, klassene og rollene dine, synkronisere dataene med Microsoft Entra ID og Microsoft 365, slik at du kan bruke Microsoft Teams, Intune for utdanning, Exchange Online, SharePoint Online, OneNote-klassenotatblokker og aktivere tredjepartsapper med Enkel pålogging integrering.

Du kan fremdeles klargjøre klasser og notatblokker i stor skala ved hjelp av PowerShell og Microsoft Graph ved å følge støttede metoder. Denne artikkelen beskriver trinnene og inneholder koblinger til relevant dokumentasjon.

Viktig

Hvis du samarbeider med en tredjepartspartner om klargjøring av klasser i stor skala, kan du dele denne artikkelen med dem før du tar dine egne trinn.

Klargjør nye klasser

Advarsel

Før 21. august 2025 anbefalte en tidligere versjon av denne dokumentasjonen klargjøring via Teams PowerShell før nødvendig oppdatering ble gjort. Disse oppdateringene er nå fullført, og du kan fortsette med denne fremgangsmåten på dette tidspunktet. Takk for tålmodigheten.

Det er enkelt å klargjøre nye klasser ved hjelp av Teams PowerShell, som inkluderer alt nødvendig oppsett for klasser og notatblokker. Bare tilpass ønsket visningsnavn i følgende skript, og kjør det som administrator.

Viktig

Følgende skript krever at du bruker Microsoft Teams PowerShell versjon 7.3.1 eller nyere. 

Eksempelskript

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

Alternativ 2: Bruke Microsoft Graph PowerShell

Hvis du ikke har tilgang til Teams PowerShell, kan du utforske klargjøring av klasser i stor skala ved hjelp av Microsoft Graph. Rediger parameterne øverst i følgende skript etter behov, og kjør deretter skriptet som administrator for å klargjøre klasser og notatblokker i stor skala:

Eksempelskript

# Bruk AV 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]|[ ]', '' # Erstatt dette e-postaliaset med en foretrukket generasjonsmetode $OwnerId = "000-0000-000-000" # Erstatt dette med eierens GUID # ------------ # Opprett en ny M365-gruppe $CreateGroupBody = @" { "beskrivelse": "$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" ], "synlighet": "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

Feilsøking: gi tillatelser til eksisterende klasseområder

Obs!

Denne fremgangsmåten krever også at personen som kjører skriptet, er en nettstedsadministrator, som beskrevet her. Skriptet nedenfor inneholder et trinn for å legge til den påloggede brukeren som nettstedsadministrator for nettstedene som krever feilsøking.

Hvis du allerede har klargjort klasser og observerer feil eller tillatelsesproblemer med klassenotatblokk- eller Teams-oppgaver, kan du oppdatere nettstedstillatelser for klassene ved hjelp av følgende skript, og erstatte rawGroups-parameteren med gruppe-ID-ene for de berørte klassene:

Eksempelskript

#You må koble til SharePoint, Exchange Online og Graph med følgende -Scopes Sites.FullControl.All, samt samle inn gruppe-ID-er for klasseteam som er berørt $rawGroups =@("b0a5905d-09ae-4605-8e12-94da93ecbe92","e0eec729-24ef-451e-b079-56d 0baf4dfc9") # Konverter til matrise med objekter med .groupid $groups = $rawGroups | ForEach-Object { Get-UnifiedGroup -Identity $_ } $step = 0 #get den påloggede brukerens konto som skal legges til som nettstedsadministrator $CUA = (get-mgcontext).account foreach ($group in $groups) { $step = $step + 1 Set-SPOUser -Site $group. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $true Write-Host SiteCollectionAdmin lagt til på $step av $($Groups.Count) klasseområder} #Pause i 5 minutter før tiggering av generell mappeoppretting Write-Host "Pause i 5 minutter før du legger til perms for å tillate at SiteCollectionAdmin overføres" 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 Apper $AppIds = @{ "8f348934-64be-4bb2-bc16-c54c96789f43"="EDU-oppgaver"; "22d27567-b3f0-4dc2-9ec2-46ed368ba538"="Leseoppgaver"; "2d4d3d8e-2be3-4bef-9f87-7875a61c29de"="OneNote"; "c9a559d2-7aab-4f13-a6ed-e7e9c52aec87"="Microsoft Forms"; " 13291f5a-59ac-4c59-b0fa-d1632e8f3292"="EDU OneNote"; } # Bruk tillatelsene på gruppeområdet $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, fjerne sitecollectionadmin" $step = 0 foreach ($group i $groups) { $step = $step + 1 Set-SPOUser -Site $group. SharePointSiteUrl -LoginName $CUA -IsSiteCollectionAdmin $false Write-Host "SiteCollectionAdmin removed on $step of $($Groups.Count) Class Sites" }