How to Configure Teams Meeting Template Permission Policies Using PowerShell CsTeamsMeetingTemplatePermissionPolicy

In large enterprise organisations, meetings vary substantially across departments, ranging from casual team huddles and external customer presentations to high-security board meetings, quarterly earnings calls, and patent discussions. To enforce consistent security baselines (such as mandatory waiting lobbies, disabled attendee video, automatic watermarking, end-to-end encryption, and restricted chat), Microsoft Teams Premium provides custom Meeting Templates. However, enterprise administrators must restrict which user groups and business units can see and apply specific meeting templates. Using the Microsoft Teams PowerShell module and CsTeamsMeetingTemplatePermissionPolicy cmdlets, IT administrators govern template visibility, scope custom configurations, and enforce compliance across tenant user populations.

Understanding CsTeamsMeetingTemplatePermissionPolicy Capabilities

Meeting template permission policies govern template discoverability in the Microsoft Teams calendar scheduling dialog. Without explicit permission policies, custom meeting templates are either universally exposed or hidden across all users. A meeting template permission policy controls:

  • Hidden Templates (HiddenMeetingTemplates): A list of custom or built-in meeting template IDs that are explicitly blocked from the scheduling menu for assigned users.
  • Visibility Scoping: Ensures sensitive configurations (such as “Board of Directors Secret Session” or “Mergers & Acquisitions Strategy”) are exposed exclusively to authorized executive leadership and legal counsel.
  • User and Group Assignment: Permits policy mapping directly to individual Entra ID users, departments, or dynamic security groups.

Connecting to Microsoft Teams PowerShell

Open an elevated PowerShell session and connect to your Microsoft 365 tenant using credentials with the Teams Administrator or Global Administrator Entra ID role:

# Import Microsoft Teams module
Import-Module MicrosoftTeams

# Authenticate to tenant
Connect-MicrosoftTeams

Auditing Existing Meeting Templates and IDs

Before restricting or assigning templates, retrieve the list of available meeting templates and their unique GUID identifiers configured in the Teams admin center:

# Retrieve all configured meeting templates
Get-CsTeamsMeetingTemplate | Select-Object Id, Name, Description, IsCustom

Note the exact Id string (a GUID or predefined system token) of the templates you intend to hide or expose.

Auditing Meeting Template Permission Policies

Query the tenant to review all existing template permission policies, including the default Global policy:

Get-CsTeamsMeetingTemplatePermissionPolicy | Select-Object Identity, Description, HiddenMeetingTemplates

To inspect the detailed attributes of the Global policy:

Get-CsTeamsMeetingTemplatePermissionPolicy -Identity "Global" | Format-List

Creating a Custom Meeting Template Permission Policy

To hide sensitive or department-specific templates from general staff while keeping them visible to authorized groups, create a new permission policy using New-CsTeamsMeetingTemplatePermissionPolicy:

# Define the template GUIDs to hide from standard employees
$HiddenTemplates = @(
    "a1b2c3d4-e5f6-7890-abcd-ef1234567890",  # Executive Board Template
    "f1e2d3c4-b5a6-0987-fedc-ba9876543210"   # M&A Confidential Review
)

# Create the policy hiding specific templates
New-CsTeamsMeetingTemplatePermissionPolicy -Identity "Standard-User-TemplatePolicy" `
    -Description "Hides executive and confidential M&A meeting templates from standard users" `
    -HiddenMeetingTemplates $HiddenTemplates

For executive leadership and legal counsel, create an unconstrained policy where no templates are hidden:

New-CsTeamsMeetingTemplatePermissionPolicy -Identity "Executive-AllTemplates-Policy" `
    -Description "Unrestricted meeting template visibility for Executive leadership" `
    -HiddenMeetingTemplates @()

Modifying Existing Template Permission Policies

To add or remove templates from the hidden list of an existing policy, use Set-CsTeamsMeetingTemplatePermissionPolicy:

# Update the hidden templates array
$UpdatedHidden = @("a1b2c3d4-e5f6-7890-abcd-ef1234567890")
Set-CsTeamsMeetingTemplatePermissionPolicy -Identity "Standard-User-TemplatePolicy" `
    -HiddenMeetingTemplates $UpdatedHidden

Assigning the Policy to Users and Security Groups

Assign the template permission policy directly to specific users or batch-assign it across organizational units:

# Assign the executive policy to a director
Grant-CsTeamsMeetingTemplatePermissionPolicy -Identity "[email protected]" `
    -PolicyName "Executive-AllTemplates-Policy"

# Bulk assign the standard restricted policy across a department
Get-AzADGroupMember -GroupDisplayName "Marketing and Sales Staff" | ForEach-Object {
    Grant-CsTeamsMeetingTemplatePermissionPolicy -Identity $_.UserPrincipalName `
        -PolicyName "Standard-User-TemplatePolicy"
}

To verify the effective policy assigned to an employee:

Get-CsUserPolicyAssignment -Identity "[email protected]" | Where-Object { $_.PolicyType -eq "TeamsMeetingTemplatePermissionPolicy" }

Validating Template Visibility in Microsoft Teams

Once assigned, instruct users to sign out and restart the Microsoft Teams desktop client. When creating a new meeting via Calendar > New meeting arrow > Schedule meeting, verify that standard employees see only appropriate business templates, while executive members retain full access to high-security confidential meeting templates.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.