Useful Teams PowerShell Commands

Back in the day, I compiled a shortish list of Lync/Skype for Business PowerShell commands that did some reasonably useful stuff. With my shift to Teams, I figure now is a good time to start compiling a list of semi-useful PowerShell scripts for Teams. I will add to this list as I think of them.

Getting Started

For now, there are TWO PowerShell modules for Teams-related tasks. Both require at least PowerShell version 5.x (run $PSVersionTable.PSVersion to check):

Skype for Business Online PS Module

The OG. You install it via You typically connect to your tenant via some variation of the below:

$s = New-CsOnlineSession -Credential (Get-Credential)
Import-PSSession $s -AllowClobber

Teams PowerShell module

To install, simply run the following in an elevated PowerShell prompt:

Install-Module -Name MicrosoftTeams -Repository PSGallery      

You then connect to your Teams tenant by running:


You will be prompted for admin credentials. Enter those, and you’ll be all set!

Count All Teams Users in your Tenant (Teams PS)

There isn’t a direct way to count every Teams user across your tenant. However, you can get a list of users in a specific team. Thanks to PowerShell pipelining, you can string multiple commands together to get the desired result.

(Get-Team | Get-TeamUser | Sort-Object User -Unique).Count

If you want to exclude external accounts who you’ve granted guest access to Teams, modify the command accordingly:

(Get-Team | Get-TeamUser | Where {$_.User -notlike “*#EXT#*”} | Sort-Object User -Unique).Count

You can get a count of all Skype for Business (on-prem) and Teams users, excluding duplicates by running this from a Skype for Business PS prompt:

$SfBUsers = (Get-CsUser).SipAddress -Replace “sip:”, “” 


$TeamsUsers = (Get-Team | Get-TeamUser | Where {$_.User -notlike “*#EXT#*”} | Sort-Object User -Unique).User 

$CombinedUsers = $SfBUsers + $TeamsUsers | Sort-Object -Unique


List All Cloud Auto-Attendants and Associated Numbers (Skype PS)

Can’t get a list of just the AA phone number from Get-CsAutoAttendant. You have to parse the resource account list for this.

$AAList = Get-CsAutoAttendant
New-Item -Path AAPhoneNum.csv -Value “Name,PhoneNumber`r`n” -Force | Out-Null
ForEach ($AA in $AAList) {
ForEach ($AppInstance in $AA.ApplicationInstances) {
$AAName = $AA.Name
$AppPhoneNum = (Get-CsOnlineApplicationInstance -Identity $AppInstance).PhoneNumber
Write-Host “$AAName  $AppPhoneNum”
Add-Content -Path AAPhoneNum.csv -Value “$AAName,$AppPhoneNum”

You May Also Like

About the Author: admin

Leave a Reply

Your email address will not be published. Required fields are marked *