Tom Talks Microsoft Teams and Microsoft 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 but does not show if they are hidden or not.

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


Example hidden / non-discoverable team – there is no way to know its non-discoverable.


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

$HiddenTeams = get-team -Visibility HiddenMembership

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

$allteams | Where-Object {$_.ShowInTeamsSearchAndSuggestions -match “False”} | Format-Table DisplayName,ShowInTeamsSearchAndSuggestions,GroupId

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

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.


Leave a Reply

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

  • Hi Tom, Thanks for the blog. great job.
    In my tenant, i dont get the option ” This team is searchable…..Change Settings”. Where can i enable this (if at all). – Kishore

Tom Talks Microsoft Teams and Microsoft 365 news and opinions