Microsoft Teams utilization have phenomenally increased with the current COVID situation where almost everyone of us are working from the home. Microsoft Teams being one of the top collaboration software helping all of us to stay better connected during this time.
Most of the organizations doesn’t restrict the Team creation from Microsoft Teams because this factor is heavily influenced on better adoption rate of the Teams communication platform. The below script can be used to run in task scheduler or in Azure Function on a monthly basis for reviewing the Teams Created in last 30 days especially to see the Teams that have been archived and to see the fashion of teams created private or public by the users.
Below is the sample output of the script which will provide us the below details.

############################################################################################################################################ # Description :- Powershell Script To extract Teams Name,Owner,backup owner,owner count,member count,Group Type and Archive Status. # Created Date :- 10-Oct-2020 # Created By :- Sathish Veerapandian # Version :- 0.2 # Imp Notes :- Please ensure you have folder C:\Scripts and clear the output files generated every time when you run the script again. # Info :- If you want to send reports as email please uncommentlast line and use the from/to address with SMTP Server ############################################################################################################################################ Connect-MicrosoftTeams $Path="C:\scripts\TeamsReport.csv" $Header = @" TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}<br /> TH {border-width: 1px; padding: 3px; border-style: solid; border-color: black; background-color: #48D1CC;}<br /> TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;background-color: #F0FFFF}<br /> "@ $Count = 0 Get-Team | foreach { $TeamName = $null ; $TeamName = $_.DisplayName $GroupId = $null ; $GroupId = $_.GroupId $Visibility = $null ; $Visibility = $_.Visibility $EmailAlias = $null; $EmailAlias = $_.MailNickName $Archived = $null; $Archived = $_.Archived $Count++ Write-Progress -Activity "`n Processed Teams count: $Count "`n" Currently Processing: $TeamName" $TeamMembersCount = $null ; $TeamMembersCount = (Get-TeamUser -GroupId $GroupId).count $TeamOwners = $null ; $TeamOwners = Get-TeamUser -GroupId $GroupId -role Owner $TeamOwnersCount = $null ; $TeamOwnersCount = ($TeamOwners).count $Owner1 = "" $Owner2 = "" If ($TeamOwnersCount -eq 1) { $Owner1 = $TeamOwners[0].User} Elseif ($TeamOwnersCount -ge 2) { $Owner1 = $TeamOwners[0].User; $Owner2 = $TeamOwners[1].User} $Output = [PSCustomObject]@{ TeamName = $Teamname Owner1 = $Owner1 Owner2 = $Owner2 TeamOwnersCount = $TeamOwnersCount TeamMembersCount = $TeamMembersCount TeamEmailAlias = $EmailAlias TeamVisibility = $Visibility TeamArchiveStatus = $Archived } $Output | select * | Export-Csv $Path -NoTypeInformation -Append $Data = Import-CSV "C:\scripts\TeamsReport.csv" $data | ConvertTo-Html -Head $Header | Out-File -FilePath C:\Scripts\TeamsReport.html # Send the exported html as email for evaluation #Send-MailMessage -From senderemailID -To recipientemailid -Attachments "C:\Scripts\TeamsReport.html" -BodyAsHtml -SmtpServer mentionsmtpserver -Subject TeamsGroupReport }
Thanks & Regards
Sathish Veerapandian
Hi nice script, do not understand line 28:
LikeLike
Hi
There was a typo error. Can you try now and see the results
LikeLike