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 https://www.microsoft.com/en-us/download/details.aspx?id=39366. 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:
Connect-MicrosoftTeams
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).CountYou 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:", ""
Connect-MicrosoftTeams
$TeamsUsers = (Get-Team | Get-TeamUser | Where {$_.User -notlike "*#EXT#*"} | Sort-Object User -Unique).User
$CombinedUsers = $SfBUsers + $TeamsUsers | Sort-Object -Unique
$CombinedUsers.Count
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"
}
}