To check meeting policies in Microsoft Teams, read every policy with Get-CsTeamsMeetingPolicy and compare the settings that decide who gets in: anonymous join, who can bypass the lobby and whether dial-in callers skip it. The organisation-wide anonymous join setting overrides every policy, and organisers can change the lobby defaults for their own meetings.
| Method | Best fit |
|---|---|
| PowerShell | A CSV of every meeting policy's join, lobby, recording and chat settings. |
| Admin centre | Reading or comparing a few policies in the Teams admin centre. |
| Altivane | Recommended for recurring reviews, with how many people each policy applies to beside its settings. |
Before you start
Use an account with the Teams Administrator or Teams Communications Administrator role, which manage meeting policies, or Teams Reader to read them in the admin centre without changing anything. The example passes no permission or scope: its access is the signed-in account's role.
Know how they apply. Everyone gets the Global (Org-wide default) policy unless a custom policy is assigned to them. Lobby and anonymous join are per-organiser settings: everyone in a meeting follows the organiser's policy. Microsoft says a change can take up to 24 hours to take effect. The examples read and export; they change and assign no policy.
Option 1
Check meeting policies with PowerShell
Install the module once, then connect and export 1 row for each meeting policy.
# Install once, if the module is not already installed.
Install-Module MicrosoftTeams -Scope CurrentUser$ErrorActionPreference = 'Stop'
Connect-MicrosoftTeams | Out-Null
try {
$policies = @(Get-CsTeamsMeetingPolicy)
$report = @(foreach ($policy in $policies) {
[pscustomobject]@{
Policy = "$($policy.Identity)" -replace '^Tag:', ''
AnonymousJoin = $policy.AllowAnonymousUsersToJoinMeeting
AnonymousStart = $policy.AllowAnonymousUsersToStartMeeting
WhoBypassesLobby = $policy.AutoAdmittedUsers
DialInBypassesLobby = $policy.AllowPSTNUsersToBypassLobby
CloudRecording = $policy.AllowCloudRecording
Transcription = $policy.AllowTranscription
MeetingChat = $policy.MeetingChatEnabledType
Presenters = $policy.DesignatedPresenterRoleMode
ExternalGiveControl = $policy.AllowExternalParticipantGiveRequestControl
}
})
$report | Sort-Object Policy |
Export-Csv -Path './teams-meeting-policies.csv' -NoTypeInformation -Encoding utf8
Write-Output "$($report.Count) meeting policies exported."
} finally {
Disconnect-MicrosoftTeams
}The CSV has 1 row for each policy. The script takes the Tag: prefix off custom policy names, and Global is the org-wide default. The tenant always has the Global policy, so the list is never empty. To add a setting, add its property to the object: the names match the parameters of Set-CsTeamsMeetingPolicy.
Check the organisation-wide anonymous join setting
Reconnect with Connect-MicrosoftTeams, then read the setting that every policy depends on. True means anonymous users can't join any meeting.
# Run while connected to Microsoft Teams.
Get-CsTeamsMeetingConfiguration | Select-Object Identity, DisableAnonymousJoinOption 2
Review meeting policies in the admin centre
- Sign in to the Microsoft Teams admin centre for the correct tenant.
- Go to Meetings > Meeting policies and select a policy, such as Global (Org-wide default).
- Read the Meeting join & lobby section, which holds the anonymous join settings, Who can bypass the lobby and People dialing in can bypass the lobby, then the recording and chat sections.
- Go to Meetings > Meeting settings and read Anonymous users can join a meeting under Participants. Leave each page without choosing Save.
This suits checking a few policies. It does not suit a side-by-side review of every policy, since each one opens on its own page.
Option 3 ยท Recommended for recurring reviews
Run Altivane's Teams Policies report
- Open Altivane and choose the tenant.
- Run the Teams Policies report for Teams.
- Open the Excel workbook and read Meeting policies: 1 row per policy with People, Anonymous Join, Anonymous Start, Skip the Lobby, Dial-In Skips Lobby, Recording, Transcription, Meeting Chat, Who Can Present and External Control.
- Read Messaging policies in the same workbook for chat, editing, deleting and read receipts.
People counts the Teams users each policy applies to, directly or through a group, and for Global those with no other meeting policy, so a policy nobody has stands out. The lobby and presenter settings read as words rather than PowerShell values. The report needs a tenant signed in with a certificate and the MicrosoftTeams module on the computer; without them it shows Not set up for this tenant.
Contact usCommon questions
Why can't anonymous users join when the policy allows it?
The organisation-wide setting overrides it. When anonymous join is turned off in the meeting settings, anonymous users can't join any meeting, whatever the organiser's policy says. Microsoft recommends leaving that setting on and controlling anonymous join through policies.
Why do people skip the lobby in some meetings and not others?
Who can bypass the lobby and People dialing in can bypass the lobby set the defaults. Organisers can change both in their meeting options, so a meeting can differ from the policy.
Who has which meeting policy?
Everyone without a custom policy assigned has Global. To export who has each policy, see how to export policy assignments in Microsoft Teams.
Microsoft references
Technical references checked on 7 November 2026. The example scripts have been reviewed and syntax checked; they have not been run against a live tenant.