Skip to content

Audit: tenant-wide Teams report with owners, member counts,

visibility, and archive status.

Permissions

Requires application permissions Team.ReadBasic.All, TeamMember.Read.All, and Directory.Read.All.

View source

from office365.graph_client import GraphClient
from tests.settings import client_id, client_secret, tenant

client = GraphClient(tenant=tenant).with_client_secret(client_id, client_secret)

teams = client.teams.get_all().select(["id", "displayName", "visibility", "mailNickname", "description"]).execute_query()
print(f"Found {len(teams)} teams\n")

for team in teams:
    members = team.members.get().execute_query()
    owners = [m for m in members if "owner" in (m.properties.get("roles") or [])]
    guests = [m for m in members if "#EXT#" in (m.properties.get("email", "") or "")]
    extra = ""
    if guests:
        extra = f"  {len(guests)} guest"
    status = "archived" if team.is_archived else "active"
    print(f"  {team.display_name}: {len(members)} members ({len(owners)} owners){extra}  {team.visibility}  {status}")

← Back to Microsoft Teams