如何创建底层SharePoint站点为英语的Microsoft Teams?三种尝试均失败
解决方案:批量创建底层为英语SPO站点的Teams
针对租户默认语言为丹麦语,创建Teams时自动生成的SPO站点语言无法通过常规PowerShell cmdlet修改的问题,推荐使用Microsoft Graph API + PowerShell的方案,直接在创建团队时指定SPO站点语言。
具体步骤
1. 配置Azure AD应用权限
在Azure AD中注册一个应用,授予以下应用权限并完成管理员同意:
Group.ReadWrite.AllSites.ReadWrite.All
记录应用的租户ID、客户端ID和客户端密钥,后续脚本会用到。
2. 编写PowerShell批量创建脚本
使用以下脚本批量创建带英语SPO站点的Teams,可根据需求调整团队参数:
# 替换为你的租户和应用信息 $tenantId = "your-tenant-id" $clientId = "your-app-client-id" $clientSecret = "your-app-client-secret" # 获取Graph API访问令牌 $tokenRequestParams = @{ Uri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" Method = "POST" Body = @{ grant_type = "client_credentials" scope = "https://graph.microsoft.com/.default" client_id = $clientId client_secret = $clientSecret } } $tokenResponse = Invoke-RestMethod @tokenRequestParams $authHeaders = @{ "Authorization" = "Bearer $($tokenResponse.access_token)" "Content-Type" = "application/json" } # 定义待创建的团队列表(示例生成50个,可替换为CSV导入) $teamsToCreate = 1..50 | ForEach-Object { @{ displayName = "English-Team-$_" description = "Team with English SharePoint site" mailNickname = "eng-team-$_" visibility = "Private" # 可选"Public" siteInfo = @{ language = "en-US" } # 指定SPO站点为英语 "template@odata.bind" = "https://graph.microsoft.com/v1.0/teamsTemplates('standard')" } } # 批量执行创建 foreach ($team in $teamsToCreate) { $requestBody = $team | ConvertTo-Json -Depth 10 try { $createResponse = Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/teams" -Method POST -Headers $authHeaders -Body $requestBody Write-Host "Created team successfully: $($team.displayName) | Site URL: $($createResponse.webUrl)" } catch { Write-Error "Failed to create $($team.displayName): $_" } # 避免触发Graph API限流,添加延迟 Start-Sleep -Seconds 2 }
3. 验证结果
创建完成后,访问团队对应的SPO站点,检查:
- 文档库URL路径为
Shared%20Documents而非丹麦语的Delte%20dokumenter - 站点设置中的语言为英语(English (United States))
关键说明
- 通过Graph API的
siteInfo.language参数,可直接指定SPO站点的创建语言,不受租户默认语言影响。 - 若需导入自定义团队信息,可将
$teamsToCreate替换为Import-Csv -Path "teams-definitions.csv",CSV需包含displayName、mailNickname等必填字段。 - 批量操作时需注意Graph API的速率限制,调整
Start-Sleep的时长避免被限流。
内容的提问来源于stack exchange,提问作者thuld
相关产品推荐
相关产品推荐

