Get Microsoft Teams details using PowerShell

 Office 365, Microsoft Teams, Raghuramji
May 18 2017

In this blog, we shall check how to get the list of Teams created in your Office 365 environment with its details using PowerShell

  • Type
  • Owner
  • No. of Channels
  • Channels list

Prerequisities:
To run this script you need to install SharePoint Online PnP module. You can get this from here.

function Export-TeamsList
{    
     param (    
           $ExportPath 
           )    
    process{ 
        Connect-PnPMicrosoftGraph -Scopes "Group.Read.All","User.ReadBasic.All"
        $accesstoken =Get-PnPAccessToken
        $group = Invoke-RestMethod -Headers @{Authorization = "Bearer $accesstoken"} -Uri  https://graph.microsoft.com/v1.0/Groups -Method Get
        $TeamsList = @()
        foreach($value in $group.value)
        {
            if($value.groupTypes -eq "Unified")
            {
                 $id= $value.id
                 Try
                 {
                 $team = Invoke-RestMethod -Headers @{Authorization = "Bearer $accesstoken"} -Uri  https://graph.microsoft.com/beta/Groups/$id/channels -Method Get 
                 "Channel count for " + $value.displayName + " is " + $team.value.id.count
                 }
                 Catch
                 {
                 "Could not get channels for " + $value.displayName + ". " + $_.Exception.Message
                 $team = $null
                 }
                 If($team.value.id.count -ge 1)
                 {
                     $Owner = Invoke-RestMethod -Headers @{Authorization = "Bearer $accesstoken"} -Uri  https://graph.microsoft.com/v1.0/Groups/$id/owners -Method Get
                     $Teams = "" | Select "TeamsName","TeamType","Channelcount","ChannelName","Owners"
                     $Teams.TeamsName = $value.displayname
                     $Teams.TeamType = $value.visibility 
                     $Teams.ChannelCount = $team.value.id.count
                     $Teams.ChannelName = $team.value.displayName -join ";"
                     $Teams.Owners = $Owner.value.userPrincipalName -join ";"
                     $TeamsList+= $Teams
                     $Teams=$null
                 }
             }
        }
        $TeamsList |Export-csv $ExportPath -NoTypeInformation 
    }
}
Export-TeamsList -ExportPath "C:\teamslist.csv"
        
Result