Tom Talks Microsoft Teams and Office 365 news and opinions

Understanding and Reporting on Non-Discoverable Hidden Microsoft Teams

Public and Private teams

In Microsoft Teams there are two types of team, Public and Private.

Public means anyone in the organisation (tenant) can join the team at any time without any approval

Private means owners of the team must admit new members.


I’m not in love with the names as these types have no bearing as to there being external guests (from other organisations/tenants) in the team. Open and Closed might make more sense, but it is what it is.


By default both Private and Public teams are discoverable. Meaning when users go to join or create a team

Note, originally private teams were not discoverable, this default changed in 2018 to allow a better user experience to find and join private teams.


Public teams are always discoverable. Private teams are discoverable by default, but when creating a private team, users can elect to make the team not searchable and discoverable. I.e. hidden from the join team screen and search. These are Non-discoverable private teams or Hidden Teams.



The use case here is a team that is not appropriate for people to know about outside of the members.

How can an administrator find non-discoverable

An administrator might have reason to find or report on non-discoverable/hidden teams

Teams admin center has some basic Team reporting and shows Privacy for Teams as Public, Private or “1Mgmt.Teams.Lifecycle.List.Column.Privacy.HiddenMembership-“ which equates to Hidden

Note I have removed a bunch of columns for an easier screenshot


Example hidden team


The challenge is you can’t sort, filter or export this report. So you can’t easily find all the hidden teams.

Finding Hidden Teams with PowerShell

Fortunately, it’s easy to find hidden teams by PowerShell. From the Powershell console run:

# Install the Microsoft Teams PowerShell Module from PSGallery
Install-Module -Name MicrosoftTeams -Repository PSGallery -Force

# Connect to Microsoft Teams

# Get hidden teams
get-team -Visibility HiddenMembership | Format-Table –AutoSize


The PowerShell might take a while as it cycles through all your teams. You can also use –Visibility Private or –visibility Public to list those teams.

That will give you a complete list of the hidden teams, their groupid, display name and description.

From here if you also want the owners and members you can do that too

Foreach ($team in $HiddenTeams)

write-host “”
Get-TeamUser -GroupId $team.groupid | Select-Object User,Name,Role | Format-Table
write-host “”
write-host “#############”
write-host “”


You could also neatly format this all into a single object/report, rather than just spewing it to the console, but hopefully you get the idea.

About the author

Tom Arbuthnot

A Microsoft MVP and Microsoft Certified Master, Tom Arbuthnot is Principal Solutions Architect at Microsoft Collaboration specialists Modality Systems.

Tom stays up to date with industry developments and shares news and his opinions on his blog, Microsoft Teams Podcast and email list. He is a regular speaker at events around the world.

Add comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Tom Talks Microsoft Teams and Office 365 news and opinions