Managing Microsoft Teams effectively can be challenging, especially when your organization has many Teams and channels. To streamline this process, administrators can leverage Graph PowerShell to get a comprehensive overview of all Teams and their channels. This article introduces a simple yet powerful script that retrieves all Teams and their respective channels, helping administrators keep their Teams environment organized.
Below is the Graph PowerShell script that retrieves a list of all Teams in your organization along with their associated channels:
# Connect to Microsoft Graph
Connect-MgGraph -Scopes "Group.Read.All" "Team.ReadBasic.All" "Channel.ReadBasic.All"
# Retrieve all Teams in the organization
$teams = Get-MgGroup -Filter "resourceProvisioningOptions/Any(x:x eq 'Team')" -All
# Loop through each team to get its channels
foreach ($team in $teams) {
Write-Output "Team Name: $($team.DisplayName)"
Write-Output "Team ID: $($team.Id)"
# Retrieve channels for the current team
$channels = Get-MgTeamChannel -TeamId $team.Id
if ($channels) {
Write-Output "Channels:"
foreach ($channel in $channels) {
Write-Output " - $($channel.DisplayName) (Channel ID: $($channel.Id))"
}
} else {
Write-Output " - No channels found."
}
Write-Output "-------------------------------------------"
}
# Disconnect from Microsoft Graph
Disconnect-MgGraph
Get-MgGroup
cmdlet to fetch all groups that have been provisioned as Teams by applying a filter on the resourceProvisioningOptions
property.Get-MgTeamChannel
cmdlet.No. Teams and Channels are separate objects in Microsoft Graph. You must first query Teams using Get-MgTeam
and then query their respective channels with Get-MgTeamChannel
When processing the results, you can filter out entries where the displayName
is "General
". This ensures you only capture custom-created channels.
Yes. Archived Teams are still listed when you run Get-MgTeam
. To identify them, check the isArchived
property for each Team.
Use the -All
parameter or implement $skiptoken
paging to handle larger datasets. Exporting results to CSV can also help with further analysis and reporting.
Error | Cause | Solution |
Insufficient privileges to complete the operation. | The account you're using doesn't have the required permissions to access Teams or channels data. | Ensure that you have the necessary permissions such as Group.Read.All , Team.ReadBasic.All , and Channel.ReadBasic.All . You may need to contact your admin to grant these permissions or use an account with sufficient rights. |
Get-MgTeamChannel : Resource not found. | The Team ID being used does not exist or cannot be accessed with your current permissions. | Verify that the Team ID is correct and that you have the appropriate permissions to view the channels within that Team. |
Authorization_RequestDenied | The authentication token used by the script does not have the correct permissions. | Reconnect to Microsoft Graph using the Connect-MgGraph cmdlet and ensure you request the necessary scopes during the connection process. |
Get-MgTeam
) and then loop through each Team to fetch its Channels (Get-MgTeamChannel
).
This separation helps ensure accuracy when building detailed reports.
Get-MgTeamChannel
also returns system-generated channels like General.displayName
“General”) when processing results to keep your output relevant.
This simple Graph PowerShell script provides administrators with a quick way to audit and manage their Teams and channels. By leveraging Microsoft Graph, you can easily adapt and extend this script to meet your organization's specific needs. Utilizing scripts like this helps maintain a well-structured Teams environment, ensuring that users can collaborate efficiently.
© m365corner.com. All Rights Reserved. Design by HTML Codex