Site icon Office 365 for IT Pros

All About the Microsoft Teams PowerShell Module

Advertisements

Current Version of the Microsoft Teams PowerShell Module is 7.7

Updated April 1, 2026

See the Microsoft Teams PowerShell release notes for details of what Microsoft changes in a module update. We used to include details here, but Microsoft now produces well-structured release notes in a timely manner.

Figure 1: Microsoft Teams PowerShell module in the PowerShell Gallery

Updating the Module

Updating the Microsoft Teams module is easy. In an administrator PowerShell session, run the Update-Module cmdlet. Here’s an example showing how to update the Microsoft Teams module to a specific version:

Update-Module MicrosoftTeams -RequiredVersion 7.7 -Force -Scope AllUsers

Here are some articles about helper scripts to update Microsoft 365 PowerShell modules, including Teams, to the latest version. Importantly, the scripts clean up by removing old module versions too:

Version 7.7

Released on April 1, 2026, the headline featire of the updated module is improved performance for the Get-Team cmdlet. This is certainly more likely to get more use than any of the other changes, most of which are tweaks to cmdlets dealing with agents or telephony.

The improvement in performance for Get-Team is easily measured using the Measure-Command cmdlet. I ran a quick test to fetch all teams in the tenant. V7.6 took a maximum of 11.83 seconds and a minimum of 3.96 seconds to fetch 93 teams. I used a series of ten runs of the cmdlet in the knowledge that peformance generally improves over successive runs of a cmdlet. V7.7 took a maximum of 5.53 seconds and a minmum of 4.11 seconds to fetch the same data. Generally, V7.7 was more predictable and faster.

Version 7.6

Released on January 23, 2026. This release features cmdlets to return the set of available AI agents fro, Agent 365 and many tweaks to Teams Phone cmdlets.

Version 7.5

Released on November 11, 2025. The most interesting change is the apparent preparation for the ability to change the ownership of recordings for Teams meetings from meetng organizers. Such functionality hasn’t surfaced in the product yet.

Version 7.4

Released on October 6, 2025. The Get-TeamsArtifacts cmdlet is the most interesting addition as it avoids doing a lot of Graph API work to fetch artifacts.

Version 7.3 and 7.3.1

Released on August 21, 2025 to fix an issue with the New-Team cmdlet for Education tenants. The V7.3 module was released on August 11, 2025. Most of the changes in the 7.3 release are associated with the management of Teams attendants.

Version 7.2

Released on July 4, 2025. Not too much to report.

Version 7.1

Released on June 3, 2025. A couple of interesting changes appeared, such as the control for switching channels into the new threaded layout view, some changes needed for the queues app, and updates for external access.

Version 7.0

Released on April 21, 2025, a new major version always promises some major enhancements. Version 7 doesn’t quite measure up to the expectation because it’s a collection of fixes and adjustments similar to any of the version 6.* updates.

Version 6.9

Released on March 12, 2025, V6.9 is a fit and finish release to tidy up some cmdlets.

Version 6.8

Released on January 30, 2025, V6.8 contains a bunch of changes to the Get-CsOnlineUser cmdlet for the 21Vianet cloud (China). The same changes were published in V5.9 for the GCC/DOD clouds and in V5.0 for the commercial cloud. Aside from that, the module :

Version 6.7

Released on November 19, 2024. The important changes are:

Version 6.6

Released on October 3, 2024 after an unusually long gap since the previous update. The changes include:

Version 6.5

Released on August 2, 2024, this release is pretty minimal:

Version 6.4

Released on June 19, 2024 (another short period since the previous release), V6.4 of the Microsoft Teams PowerShell module adds the ExternalAccessWithTrialTenants parameter to the New/Set-CsTenantFederationConfiguration cmdlet. This is required to support the block for external federation with tenants that only have trial Teams licenses.

Version 6.3

Released on June 5, 2024 (a rather short delay since 6.2), V6.3 of the Microsoft Teams PowerShell module introduces a major change in that the module is only supported on PowerShell V7.2 or later or Windows PowerShell V5.1 or later. I have tested the module on PowerShell V7.4.2 and Windows PowerShell 5.1.22621.2506. The text in the release notes “Module is now supported only in PowerShell 7.2 & later, Windows PowerShell 5.1.” could be better formulated, but PowerShell Core and Windows PowerShell are both supported, providing you have the right version.

Apart from the important change to supported versions, the other changes are:

Version 6.2

Released on May 17, 2024, V6.2 of the Microsoft Teams PowerShell module doesn’t change very much.

Version 6.1

Released on April 4, 2024, V6.1 of the Microsoft Teams PowerShell module includes a useful addition to the Set-CSTenantFederationConfiguration cmdlet to block all sub-domains of a tenant when setting up a block list (rather than an allow list as described in this article). The other changes include:

Version 6.0

Released on February 24, 2024, V6.0 of the Microsoft Teams PowerShell module is most unlike the release of a major version of a software product because it doesn’t contain very much that’s new. The release:

get-csonlineuser -Identity tony.redmond@office365itpros.com | Select-Object -ExpandProperty AssignedPlan

AssignedTimestamp   Capability           CapabilityStatus GracePeriodExpiryDate IsInGracePeriod ServiceInstance
-----------------   ----------           ---------------- --------------------- --------------- ---------------
25/02/2024 16:48:08 M365_COPILOT_TEAMS   Enabled                                False           TeamspaceAPI/NA001
09/02/2024 10:04:56 MCO_VIRTUAL_APPT     Enabled                                False           MicrosoftCommunication…
09/02/2024 10:04:56 TEAMSPRO_CUST        Enabled                                False           TeamspaceAPI/NA001
09/02/2024 10:04:56 TEAMSPRO_WEBINAR     Enabled                                False           TeamspaceAPI/NA001
09/02/2024 10:04:56 TEAMSPRO_PROTECTION  Enabled                                False           TeamspaceAPI/NA001
09/02/2024 10:04:56 TEAMSPRO_MGMT        Enabled                                False           TeamspaceAPI/NA001
09/02/2024 10:04:56 TEAMSPRO_VIRTUALAPPT Enabled                                False           TeamspaceAPI/NA001
14/09/2023 21:49:26 MCOProfessional      Enabled                                False           MicrosoftCommunication…
14/09/2023 21:49:26 Teams                Enabled                                False           TeamspaceAPI/NA001
14/09/2023 21:49:26 MCOEV                Enabled                                False           MicrosoftCommunication…
14/09/2023 21:48:18 MCOMEETADD           Enabled                                False           MicrosoftCommunication…
10/08/2023 09:36:16 MCOEssential         Deleted                                False           MicrosoftCommunication…
10/08/2023 09:36:16 MCOPSTN2             Deleted                                False           MicrosoftCommunication

Version 5.9

Released on January 24, 2024, V5.9 of the Microsoft Teams PowerShell module. The big change is the addition of support for managed identities for the policy management cmdlets inherited from the Skype for Business connector (the *-cs cmdlets, like Get-CsTeamsMessagingPolicy). This allows the policy cmdlets to run in Azure Automation runbooks. A small number of cmdlets from the Teams module do not support managed identities. Other changes include:

The change to support policy cmdlets is sufficient to warrant a fast update to V5.9.

Version 5.8

Released on November 16, 2023, V5.8 of the Microsoft Teams PowerShell module doesn’t contain any earthshattering changes.

Version 5.7

Released on October 17, 2023, V5.7 of the Teams PowerShell module contains the usual mixture of tweaks, bug fixes, and cmdlet refreshes:

On October 20, 2023, Microsoft released version 5.7.1 of the Microsoft Teams module. They didn’t say what problem created the need to patch V5.7 so quickly after its release.

Version 5.6

Released on September 14, 2023, V5.6 of the Teams PowerShell module contains several bug fixes and some new cmdlets. Here’s what’s in the release:

Version 5.5

Microsoft released Version 5.5 of the Teams PowerShell module on August 2, 2023. Like most of the recent monthly releases, this is a fit and finish update. The changes are:

Version 5.4

Microsoft released Version 5.4 on July 13, 2023. This release can be categorized as a fit and finish update. The major changes are:

Version 5.3

Microsoft released Version 5.3 on June 19, 2023. The release mostly updates support for cmdlets dealing with the Teams Shifts app and includes:

Version 5.2

Microsoft shipped Version 5.2 on May 15, 2023. This version includes:

Version 5.1

Microsoft shipped Version 5.1 on March 31, 2023. The changes that took my eye are:

Version 5.0

This version appeared in early March 2023 and focuses on a major update for the Get-CsOnlineUser cmdlet. See this post for more information.

Version 4.9.3

Issued without notice on January 31, 2023, the changes in this version include:

Set-CsTeamsMeetingBrandingPolicy -Identity <Identity> -MeetingBrandingThemes $null -DefaultTheme ""
$exampleMeetingBrandingTheme = New-CsTeamsMeetingBrandingTheme -DisplayName "exampleTheme" -LogoImageLightUri "https://contoso.com/light.jpg" -LogoImageDarkUri "https://contoso.com/dark.jpg" -BackgroundImageLightUri "https://contoso.com/backgroundlight.jpg" -BackgroundImageDarkUri "https://contoso.com/backgrounddark.jpg" -BrandAccentColor "#000000" -Enabled $true -Identity "exampleTheme"
Set-CsTeamsMeetingBrandingPolicy -Identity <Identity> -MeetingBrandingThemes @($exampleMeetingBrandingTheme) -DefaultTheme "exampleTheme"

Version 4.9.1

An unusual interim update released on November 15, 2022, V4.9.1 of the Microsoft Teams PowerShell module contains the generally available implementation of application-based authentication support for the Connect-MicrosoftTeams cmdlet. Several other changes are in the module, including:

Version 4.9

Released on November 1, 2022, V4.9 of the Microsoft Teams PowerShell module continues the work to modernize the cmdlets from the old Skype from Business Online connector. This work is important because some of the older cmdlets can’t run in environments like Azure Automation. The upgraded policy management cmdlets still aren’t perfect in terms of their support for Azure Automation, but they do work (as illustrated by this example).

The notable changes in V4.9 include:

For the record, the Add-TeamChannelUser issue remains unresolved in V4.9. Documentation has not been updated at the time of writing.

Version 4.8

Released on October 11, 2022, V4.8 of the Microsoft Teams PowerShell module is another incremental fit and finish update. Microsoft documents the following in its release notes:

I thought that Microsoft was going to fix the bug in the Add-TeamChannelUser cmdlet that prevents a user from another tenant being added to a shared channel when specifying their user principal name – but they haven’t!

Version 4.7

Microsoft released V4.7 of the MicrosoftTeams PowerShell module on September 1, 2022. Unlike V4.6, this is very much a fit-and-finish release and most tenant administrator will not notice the changes because of the lack of impact on mainline cmdlets. Here’s the set of changes as documented in the release notes.

Version 4.6

Microsoft released V4.6 of the MicrosoftTeams PowerShell module on July 29, 2022. Continuing the recent trend, the new version contains a lot of modernization activity as Microsoft seeks to upgrade cmdlets (mainly from the old Skype for Business connector) to match updated standards. Among the changes are:

The Get-CsOnlineUser cmdlet now has an AccountType parameter. For example, to find user accounts:

Get-CsOnlineUser -AccountType User | Format-Table DisplayName

This command returns accounts for user and shared mailboxes. The cmdlet supports “Guest” as a parameter value, but it doesn’t return any guest accounts in my tenant. Some other bits might be needed.

The *-CsTeamsEventsPolicy cmdlet set is added. This appears to be a policy to control webinars, perhaps to move settings for these (and other events) out of the meeting policy.

Get-CsTeamsEventsPolicy

AllowWebinars   : Enabled
EventAccessType : Everyone
Description     : Default policy
DataSource      :
Key             : ScopeClass=Global;SchemaId=;AuthorityId=;DefaultXml=;XmlRoot=
Identity        : Global

Some extra cmdlets to support shared channels are added. For example, the Add-TeamChannelUser cmdlet now takes an optional tenant identifier to allow the addition of a user from an external tenant to a shared channel:

Add-TeamChannelUser -GroupId b647d5ff-3bda-4333-b768-7990084569b6 -DisplayName "📔Teams Practices and Architecture" -User "James.Hoover@O365maestro.onmicrosoft.com" -TenantId 22e90715-3da6-4a78-9ec6-b3282389492b

The Get-SharedWithTeam cmdlet checks if a shared channel is shared with a team:

Get-SharedWithTeam -HostTeamId b647d5ff-3bda-4333-b768-7990084569b6 -ChannelId "19:5-aYUE7mEEoAmK8gzNZDfT6aTmsyh5DXKAWLNP45aks1@thread.tacv2" | fl


GroupId     : b647d5ff-3bda-4333-b768-7990084569b6
DisplayName : Office 365 Adoption
TenantId    : a662313f-14fc-43a2-9a7a-d2e27f4f3478
IsHostTeam  : True

The Get-TeamAllChannel cmdlet returns all channels and their properties found in a team. This cmdlet makes it easier to report channels.

Get-TeamAllChannel -GroupId b647d5ff-3bda-4333-b768-7990084569b6

Id             : 19:212515334493446089249a5a1f7070cb@thread.tacv2
DisplayName    : Microsoft 365 Roadmap items
Description    :
MembershipType : Standard
HostTeamId     : a647d5ff-3bda-4333-b768-7990084569b6
TenantId       : a662313f-14fc-43a2-9a7a-d2e27f4f3478

Id             : 19:2868c84ae7ff43d09197f74ef44b4825@thread.tacv2
DisplayName    : Blog Posts
Description    : Blogs from many places
MembershipType : Standard
HostTeamId     : b647d5ff-3bda-4333-b768-7990084569b6
TenantId       : a662313f-14fc-43a2-9a7a-d2e27f4f3478

Id             : 19:44ecfd5231b44f4baf7bf664c7048e8e@thread.tacv2
DisplayName    : Project Hydra
Description    : Discussions about the Hydra Project
MembershipType : Private
HostTeamId     : a647d5ff-3bda-4333-b768-7990084569b6
TenantId       : a662313f-14fc-43a2-9a7a-d2e27f4f3478

Id             : 19:5-aYUE7mEEoAmK8gzNZDfT6aTmsyh5DXKAWLNP45aks1@thread.tacv2
DisplayName    : 📔Teams Practices and Architecture
Description    : Discussions about the most productive practices and architectural decisions in Microsoft Teams
                 deployments
MembershipType : Shared
HostTeamId     : b647d5ff-3bda-4333-b768-7990084569b6
TenantId       : a662313f-14fc-43a2-9a7a-d2e27f4f3478

The Get-TeamIncomingChannel cmdlet reports if a team has access to shared channels hosted in other tenants:

Get-TeamIncomingChannel -GroupId 5b617155-a124-4e32-a230-022dfe0b80ac

Id             : 19:qxTeKg0KEuJTNd9S-d75-dq4gJz30bdhSg4HOKBRj3Y1@thread.tacv2
DisplayName    : 📔Teams and Groups Discussion
Description    :
MembershipType : Shared
HostTeamId     : 2713f078-45a7-4b86-a548-d97870ad2b70
TenantId       : 22e90715-3da6-4a78-9ec6-b3282389492b

The Get-AssociatedTeam cmdlet reports the set of teams a user has access to, including teams hosting shared channels in another tenant (like the last team in the example listing):

Get-AssociatedTeam -User Ken.Bowers@office365itpros.com

GroupId                              DisplayName         TenantId
-------                              -----------         --------
82ae842d-61a6-4776-b60d-e131e2d5749c Rugby Lovers        a662313f-14fc-43a2-9a7a-d2e27f4f3478
bda4f6ed-f102-4a23-a2f7-ef363f45ded6 Sales Team          a662313f-14fc-43a2-9a7a-d2e27f4f3478
fee4a526-fd91-46e9-a45b-cdb92f929602 Corona Virus News   a662313f-14fc-43a2-9a7a-d2e27f4f3478
9367a82e-9c65-4258-86fb-c2eb304c79ef Privacy Advocates   a662313f-14fc-43a2-9a7a-d2e27f4f3478
50a43aed-4a24-4925-a2f4-6545e63a066d James Hoover Team   22e90715-3da6-4a78-9ec6-b3282389492b

The Get-TeamTargetingHierarchyStatus cmdlet is also released, but I don’t see how this is used.

Version 4.5

On July 1, 2022, Microsoft published V4.5.0. This release doesn’t contain anything earthshattering and is largely devoted to a set of fixes and enhancements (see the release notes). The Get-CsOnlineUser cmdlet now supports a SoftDeletedUsers parameter to list soft-deleted Azure AD accounts enabled for Teams:

Get-CsOnlineUser -SoftDeletedUsers | ft Displayname, SoftDeletionTimestamp

DisplayName   SoftDeletionTimestamp
-----------   ---------------------
Maurice Keane 01/07/2022 10:17:13

The Teams module doesn’t contain a cmdlet to restore a soft-deleted account. To do that, you’ll need to use a cmdlet like Restore-MgDirectoryDeletedItem as described in this article.

Version 4.4.1

On June 1, 2022, Microsoft published V4.4.1. This follows the release of 4.3 in May (not much happened in that version). Work continues to modernize the old Skype for Business policy management cmdlets and to fix bugs. The most important changes in this release are:

In reality, not much to report…

Version 4.2

On April 13, 2022, Microsoft published V4.2 of the Microsoft Teams PowerShell module in the PowerShell Gallery. The release notes for the module are sadly deficient in terms of the clarity and completeness of the information they offer about the changes. I’ve noted these concerns to the Teams developers because it doesn’t take much effort for a program manager to write up some concise and coherent notes instead of grabbing a bunch of developer comments about changes. Here’s my interpretation of the changes:

Proxy support for all the cmdlets relevant for Teams. The supported cmdlets are being gradually rolled out.

In other words, Microsoft has deprecated some old cmdlets only used for managing Skype for Business Online. These cmdlets will be removed from the MicrosoftTeams module over the next few months.

Fixes issues with [New|Set]- modernized Policy cmdlets when used with PSListModifier type parameters.

This is an internal fix which shouldn’t affect scripts.

[BREAKING CHANGE] PSListModifier type parameters will only accept Hashtable with Add or Remove. Hashtable with Replace is not supported now, instead value(s) can be set directly in the parameter.

PSListModifier is a helper class used by many cmdlets to manipulate lists (for instance, the set of email addresses assigned to a mail-enabled recipient). Instead of passing simple values in parameters to update lists, you need to use hash tables.

Fixes format issues with [Get|New]- of few modernized Policy cmdlets (CsVideoInteropServiceProvider, CsInboundBlockedNumberPattern, CsTeamsComplianceRecordingApplication, CsTeamsTranslationRule, CsTeamsUnassignedNumberTreatment, CsVoiceNormalizationRule).

Improved performance of pipeline input processing with the modernized cmdlets.

A modernized cmdlet is one that is REST-based (AutoRest-generated) instead of communicating with the server using the older PowerShell remoting method. Some of the cmdlets needed a little help to improve their performance.

Fixes minor issues with pipeline input results.

Apparently, the fix makes sure that Catch handles errors correctly.

Get-CsOnlineUser: Country attribute (known as CountryOrRegionDisplayName in versions earlier than 3.x.x), is added.

[BREAKING CHANGE] Get-CsOnlineUser: CountryAbbreviation attribute is now only available when used with -Identity parameter.

Both these changes are due to an update to an internal store. You should update scripts to use Country instead of CountryOrRegionDisplayName and make sure that the identity parameter is passed to Get-CsOnlineUser when you want to see the CountryAbbreviation attribute. For example:

(Get-CsOnlineUser -Identity Kim.Akers@Office365itpros.com).CountryAbbreviation

[BREAKING CHANGE] Get-CsOnlineVoicemailPolicy returns data for MaximumRecordingLength in string format instead of TimeSpan.

The change from date time to string output might break some scripts.

Updates in Version 4.0

Version 4.0 of the Microsoft Teams PowerShell module is mostly a fit and finish release. This update marks the completion of the work to modernize the old policy management and voice cmdlets inherited from Skype for Business Online to versions that don’t use remoting. The new versions of the cmdlets should be more stable than their predecessors. Other changes include:

It doesn’t appear that Microsoft has done any work to the cmdlets used to create and manage teams. Updates for shared channels were available in version 3.1.1. However, some shared channel operations are still not possible in PowerShell, such as inviting a team to join a channel.

Updates in Versions 3.0-3.1.1

Most of the work on the Microsoft Teams PowerShell module since 2.6.0 has focused on the older policy cmdlets inherited from the Skype for Business like Grant-CsApplicationAccessPolicy. The work converts the cmdlets from using remoting (based on the WS-Management protocol) to a more modern implementation better suited for cloud environments. Some performance issues have also been addressed. So far, there are no reports of any problems with the 3.1.1 version.

Updates in 2.6.0

So far, no known errors have shown up in version 2.6 of the Microsoft Teams PowerShell module. The changes noted in the release notes are:

Updates and Issues in 2.5.0

Here are some details of the changes in the 2.5.0 release of the Microsoft Teams PowerShell module:

Updates in 2.3.1

The changes in the V2.3.1 of the Microsoft Teams PowerShell module are mostly bug fixes and don’t stretch to much new functionality. Here’s what’s important:

Because of the bug fixes included in module updates, we recommend you download and test your scripts against the latest version of the Teams PowerShell module as soon as convenient. If the tests prove successful, then you can deploy the new module into production.

Retirement of old Skype for Business Online Cmdlets

Microsoft upgraded the Teams module to 2.0 in March 2021. This was a big update because it marked the incorporation of the cmdlets from the old Skype for Business Online connector. Replacing the Skype for Business Online connector with the Teams PowerShell module means that tenants must upgrade their scripts to ensure that the correct module is loaded. Although the New-CsOnlineSession is no longer necessary to connect to what is now effectively the Teams policy endpoint, the other cmdlets previously accessed through the connector are available after Connect-MicrosoftTeams runs to create a new session. A big advantage is that there’s no need to run the Enable-CsOnlineSessionforReconnection cmdlet to stop the session timing out after an hour.


Stay acquainted with all the moving parts of Office 365 by subscribing to the Office 365 for IT Pros eBook. Monthly updates mean that we stay ahead of the game in terms of warning our readers when they need to take action.

Exit mobile version