可以使用 Microsoft 365 开发人员订阅的示例数据来测试 Microsoft Teams 应用。
先决条件
- 如果没有测试租户,请加入 Microsoft 365 开发人员计划。
- 设置 Microsoft 365 开发人员订阅。
- 将示例数据包与 Microsoft 365 开发人员订阅结合使用,以安装用户内容包。
- 安装 Teams PowerShell 模块。
- 安装 Microsoft Graph PowerShell 模块。
注意
必须在租户中具有全局管理员权限才能运行脚本。
允许用户上传应用
默认情况下,只有全局管理员或 Teams 服务管理员可以在租户中上传自定义应用。 你还可以允许用户上传自定义应用以供其使用,或上传到团队进行测试。 有关详细信息,请参阅在 Teams 中管理自定义应用策略和设置。
创建用于测试的团队和频道
将以下代码片段另存为 .xml 文件,并记下文件路径。 此 XML 定义与其成员一起创建的团队和频道的结构:
<?xml version="1.0"?> <Teams> <Team Name="Store Portal" ID="storeportal" Description="" Type="Private" Creator="admin"> <Members> <Member UserName="AlexW" IsOwner="false"/> <Member UserName="PattiF" IsOwner="false"/> <Member UserName="PradeepG" IsOwner="false"/> <Member UserName="JoniS" IsOwner="false"/> <Member UserName="JohannaL" IsOwner="false"/> <Member UserName="NestorW" IsOwner="false"/> <Member UserName="IsaiahL" IsOwner="false"/> <Member UserName="AdeleV" IsOwner="false"/> <Member UserName="LeeG" IsOwner="false"/> <Member UserName="MeganB" IsOwner="true"/> <Member UserName="LynneR" IsOwner="false"/> <Member UserName="GradyA" IsOwner="false"/> <Member UserName="LidiaH" IsOwner="false"/> <Member UserName="DiegoS" IsOwner="false"/> <Member UserName="MiriamG" IsOwner="true"/> </Members> <Channels> <Channel Name="Sales" ID="sales" Description="" Creator="Admin" /> <Channel Name="Inventory" ID="inventory" Description="" Creator="Admin" /> <Channel Name="Los Angeles Store 239" ID="losangelesstore239" Description="" Creator="Admin" /> <Channel Name="Seattle Store 121" ID="seattlestore121" Description="" Creator="Admin" /> <Channel Name="Online" ID="online" Description="" Creator="Admin" /> <Channel Name="Store Layout" ID="storelayout" Description="" Creator="Admin" /> <Channel Name="Promotions" ID="promotions" Description="" Creator="Admin" /> </Channels> </Team> <Team Name="Mark 8 Project Team" ID="Mark8ProjectTeam" Description="Welcome to the team that we've assembled to create the Mark 8." Type="Private" Creator="admin"> <Members> <Member UserName="meganb" IsOwner="true" /> <Member UserName="alexw" IsOwner="false" /> <Member UserName="lynner" IsOwner="false" /> <Member UserName="isaiahl" IsOwner="false" /> <Member UserName="leeg" IsOwner="false" /> <Member UserName="pradeepg" IsOwner="false" /> <Member UserName="lidiah" IsOwner="false" /> <Member UserName="diegos" IsOwner="false" /> <Member UserName="johannal" IsOwner="false" /> <Member UserName="miriamg" IsOwner="false" /> <Member UserName="adelev" IsOwner="false" /> <Member UserName="jonis" IsOwner="false" /> <Member UserName="nestorw" IsOwner="false" /> <Member UserName="gradya" IsOwner="false" /> <Member UserName="pattif" IsOwner="false" /> </Members> <Channels> <Channel Name="Research and Development" ID="researchanddevelopment" Description="Channel for Research and Development!" Creator="meganb" /> <Channel Name="Design" ID="design" Description="Discuss design projects." Creator="meganb" /> <Channel Name="Digital Assets Web" ID="digitalassetsweb" Description="Discuss digital assets." Creator="meganb" /> <Channel Name="Go to Market Plan" ID="gotomarketplan" Description="Our go-to-market plan!" Creator="meganb" /> </Channels> </Team> <Team Name="District 9 Road Safety Audit" ID="district9roadsafetyaudit" Description="" Type="Private" Creator="admin"> <Members> <Member UserName="meganb" IsOwner="true" /> <Member UserName="alexw" IsOwner="false" /> <Member UserName="lynner" IsOwner="false" /> <Member UserName="isaiahl" IsOwner="false" /> <Member UserName="leeg" IsOwner="false" /> <Member UserName="pradeepg" IsOwner="false" /> <Member UserName="lidiah" IsOwner="false" /> <Member UserName="diegos" IsOwner="false" /> <Member UserName="johannal" IsOwner="false" /> <Member UserName="miriamg" IsOwner="false" /> <Member UserName="adelev" IsOwner="false" /> <Member UserName="jonis" IsOwner="false" /> <Member UserName="nestorw" IsOwner="false" /> <Member UserName="gradya" IsOwner="false" /> <Member UserName="pattif" IsOwner="false" /> </Members> <Channels> <Channel Name="Audit Planning" ID="auditplanning" Description="" Creator="Admin" /> <Channel Name="Delivery" ID="delivery" Description="" Creator="Admin" /> <Channel Name="Findings" ID="findings" Description="" Creator="Admin" /> <Channel Name="Recommended Actions" ID="recommendedactions" Description="" Creator="Admin" /> <Channel Name="Survey" ID="survey" Description="" Creator="Admin" /> </Channels> </Team> <Team Name="ACC-1000 Product Team" ID="acc1000productteam" Description="" Type="Private" Creator="admin" > <Members> <Member UserName="meganb" IsOwner="true" /> <Member UserName="alexw" IsOwner="false" /> <Member UserName="lynner" IsOwner="false" /> <Member UserName="isaiahl" IsOwner="false" /> <Member UserName="leeg" IsOwner="false" /> <Member UserName="pradeepg" IsOwner="false" /> <Member UserName="lidiah" IsOwner="false" /> <Member UserName="diegos" IsOwner="false" /> <Member UserName="johannal" IsOwner="false" /> <Member UserName="miriamg" IsOwner="false" /> <Member UserName="adelev" IsOwner="false" /> <Member UserName="jonis" IsOwner="false" /> <Member UserName="nestorw" IsOwner="false" /> <Member UserName="gradya" IsOwner="false" /> <Member UserName="pattif" IsOwner="false" /> </Members> <Channels> <Channel Name="Corporate Communication" ID="corporatecommunication" Description="" Creator="Admin" /> <Channel Name="Lean Process Improvement" ID="corporatecommunication" Description="" Creator="Admin" /> <Channel Name="Training and Certification" ID="trainingandcertification" Description="" Creator="Admin" /> <Channel Name="Production" ID="production" Description="" Creator="Admin" /> <Channel Name="Research and Development" ID="researchanddevelopment" Description="" Creator="Admin" /> <Channel Name="Supplier Collaboration" ID="suppliercollaboration" Description="" Creator="Admin" /> </Channels> </Team> </Teams>将以下代码片段保存为 PowerShell 脚本 (.ps1) 并记下保存的位置。 此脚本执行用于创建团队和频道并向其中添加成员的步骤:
Param( [Parameter(Mandatory = $true)] # This specifies the location of your configuration XML [string] $teamsFilePath ) [xml]$XmlDocument = Get-Content -Path $teamsFilePath.ToString() if ($XmlDocument.Teams.Team.Count -gt 0) { try { # 1. Connecting to Microsft Graph PowerShell. Connect-MgGraph -Scopes "Group.ReadWrite.All", "User.ReadWrite.All", "Channel.Create", "Team.Create" -ErrorAction Stop # Connect to Microsoft Teams PowerShell. Connect-MicrosoftTeams Write-Host "Connected to Microsoft 365 and configuring your organization with test teams and channels" # 2. Create the teams as specified in the XML foreach ($team in $XmlDocument.Teams.Team ) { try { $group = New-Team -DisplayName $team.Name -Description $team.description -visibility public Write-Host "Successfully created team: " $group.DisplayName } catch { Write-Host "Unable to create team: $_" } # 3. Add users to the newly created teams foreach ($user in $team.Members.Member) { try { # Lookup user by exact userPrincipalName $username = if ($user.UserName -match '@') { $user.UserName.ToLower() } else { "$($user.UserName.ToLower())@M365x15856998.onmicrosoft.com" } $userObject = Get-MgUser -Filter "userPrincipalName eq '$username'" -ConsistencyLevel eventual $newUserPrincipalName = $userObject.UserPrincipalName if ($user.IsOwner -eq $true) { Add-TeamUser -GroupId $group.GroupId -User $newUserPrincipalName -Role Owner | Out-Null } else { Add-TeamUser -GroupId $group.GroupId -User $newUserPrincipalName | Out-Null } Write-Host "Successfully added user : " $user.UserName } catch { Write-Host "Unable to add team user: $_" } } # 4. Add a set of channels to each newly created team foreach ($channel in $team.Channels.Channel) { try { # Adding each team channel New-TeamChannel -GroupId $group.GroupId -DisplayName $channel.Name -Description $channel.Description | Out-Null Write-Host "Successfully created channel: " $channel.Name } catch { Write-Host "Unable to add new Team Channel: $_" } } } # 5. Disconnect from all PowerShell sessions Write-Host "Completed execution and disconnecting from Microsoft 365 PowerShell sessions." Disconnect-MicrosoftTeams Disconnect-MgGraph } catch { Write-Host "Unable to complete the operation: $_" } } else { Write-Host "Content file has invalid data." }在管理员模式下打开Windows PowerShell会话,并运行保存的脚本。
当系统提示你提供凭据时,请输入首次注册开发人员订阅时收到的全局管理员凭据。
注意
请勿关闭 PowerShell 会话,因为脚本需要几分钟来执行。 如果已根据默认内容包中创建的内容修改订阅中的用户,则某些用户可能不会添加到 Teams。 当脚本执行时,它将显示成功或失败的操作。
脚本完成执行后,你可以使用其中一个用户帐户登录到 Teams 客户端,并查看新创建的团队。