Check Teams Meeting Call Quality Using PowerShell

Check Teams Meeting Call Quality Using PowerShell

Microsoft Teams meetings/calls bring us collaborative experience and pave the way for increasing the productivity of an organization. However, it’s rare for a meeting call to conclude without someone mentioning issues like “poor audio quality,” “video buffering,” “poor network connection,” or “audio breaking up.” 💯

While these problems might seem minor, they can seriously impact both collaboration and productivity. That’s why it’s crucial for Microsoft Teams administrators and help desk members to monitor Teams meeting call quality and troubleshoot poor call quality reasons.
So, let’s dive into the different ways you can generate call quality statistics in Microsoft 365.

Different Ways to Check Call Quality in Teams Meetings in Microsoft 365

Microsoft offers four methods to help you analyze the call quality data of Microsoft Teams meetings/calls. Though there are ways to get call data, the methods come with drawbacks. But don’t worry! We have come up with an easy and better solution. Let’s see them in detail below!

Check Call Quality in Microsoft Teams Admin Center:

You can view call quality report for a user by navigating to Microsoft Teams admin center Users Manage Users Select a user Meetings & Calls. In fact, you can also set a rule in the Teams admin center and get alerts in real time if users encounter quality problems in their meetings.

  • However, this section does not provide comprehensive call quality data such as detailed video and app sharing insights. Also, with this real-time Microsoft Teams call analytics reports, you can troubleshoot poor call quality per user. But it is not suitable for obtaining tenant-wide call quality statistics.

Set Up Call Quality Dashboard (CQD) to Analyze Teams Call Quality:

You can also use the online Microsoft Call Quality Dashboard to manage calls and meeting quality in Microsoft Teams. By default, it supports reports of call quality, which is basic. More detail (audio, video, apps) requires customization, but customizing reports for each specific data set is complex and time-consuming. Also, you can’t generate all the call quality reports in a single go!

Get Microsoft Teams Call Quality Data from Power BI:

You can use Power BI to analyze CQD data for Microsoft Teams. You can do it using customizable Power BI templates. However, this method requires a good understanding of Power BI.

Access Teams Call Quality Data Using Graph API:

You can also use Graph API to access call quality data for Microsoft Teams meetings. However, the CallRecords Graph API may not contain all the necessary details about call quality, and some naming conventions may differ from those used in CQD.

To eliminate all these above drawbacks, we have developed a PowerShell script to export all the major Microsoft Teams meetings call quality reports in a single go!

Script Highlights:

  1. Generate 6 Microsoft Teams call quality reports by default.
  2. Exports Teams call quality report results as a CSV file.
  3. The script can be executed with an MFA-enabled account too.
  4. The script uses CQD PowerShell and installs CQD PowerShell (if not installed already) upon your confirmation.
  5. The script is scheduler friendly.
  6. The script sets for 28 days by default as EUII data only available for 28 days.

Microsoft 365 Teams Call Quality Statistics Report – Script Execution Steps:

  1. Download the script.
  2. Start the Windows PowerShell.
  3. You can run the script with MFA and non-MFA accounts.

This will export 6 different meeting call health reports by default into separate CSV files. Let’s see them in detail below.

Points to Note:

  1. You might see some columns look empty; this is due to the endpoint that doesn’t report this data. This applies to all the reports.
  2. When you mute/unmute audio during meetings, it will be considered a separate stream and will be shown in a separate row in the meeting info report.

Check Teams Meeting Call Quality Statistics Reports

This single PowerShell script enables you to get all the 6-call quality reports essential for top-notch call quality in Microsoft Teams. They are,

  1. Export Teams meeting call history to CSV file
  2. Check network quality of Teams meetings and calls
  3. Check audio health of Teams meetings using PowerShell
  4. Monitor MS Teams video quality report using PowerShell
  5. Retrieve app sharing health report using PowerShell
  6. Get device usage statistics in Microsoft Teams

Let’s see how these reports help you find the root cause of common problems in your Teams call and improve the call quality performance.

1. Export Teams Meeting Call History to CSV File

‘N’ meetings can usually take place in an organization. You can use this script with a “-MeetingInfo” parameter to get a history of Teams meeting/call for the past 28 days.

.\TeamsMeetingCallQualityStatisticsReport.ps1 -ReportRequired MeetingInfo 

This Microsoft Teams meeting record report exports the meeting date, meeting/call ID, meeting organizer UPN, UPN of the first end of the stream (server), UPN of the second end of the stream(client), session type, network transport type, average network score, total meeting duration, starting and end time of the meetings (in local time).

Sample Output:

Teams Meeting info Report

How Does the Teams Meeting Info Report Help You?

  • This report helps you audit Microsoft Teams meetings that did not provide a good experience by referring to the average network score.
  • You can determine which session types (meeting or call) are associated with call issues by referring to the session type.
  • By looking at the network type, you can identify which network types (UDP, TCP) impact meeting call quality.

2. Check Network Quality of Teams Meetings and Calls

High-quality Teams meeting calls require a strong network connection. By assessing bad network complaints in Teams meetings, you can take proactive steps to address them before they disrupt further calls. For better Microsoft Teams network assessment, you can export the network quality report using this PowerShell script with “– NetworkQuality” parameter.

.\TeamsMeetingCallQualityStatisticsReport.ps1 -ReportRequired NetworkQuality 

This report shows you insights into the UPN of the server ( UPN of the first end of stream), UPN of the client (UPN of the second end of stream), the Internet Service Provider of the server (ISP of first end stream), the Internet Service Provider of the client (ISP of second end stream), average jitter, average packet loss, average round trip.

  • Average jitter – Average change in delay between successive data packets.
  • Average packet loss – Average percentage of packets that are lost
  • Average round trip – The average time it takes for a data packet to travel from point A to point B and back again.

Sample Output:

Network quality report to analyze Teams call quality

How Does This Script Help You Solve Poor Network Quality Issue?

By identifying the jitter, packet loss, and round-trip counts, you can easily analyze the causes of poor call quality caused by the network. This helps you take proactive remediation to fix network connection problems, such as

  • Improving Wi-Fi coverage
  • Contacting ISPs
  • Minimizing network congestion
  • Using a wired ethernet connection.

3. Check Audio Health of Teams Meetings Using PowerShell

The Microsoft Teams Call Quality Dashboard provides various data and reports on call quality, like monthly & daily audio stream trends. However, for an in-depth analysis like the count of good/bad audio stream count for meeting wise, you can use this PowerShell script with “-AudioHealth” parameter.

.\TeamsMeetingCallQualityStatisticsReport.ps1 -ReportRequired AudioHealth 

This script will export an audio health report with insights into:

  • Meeting date
  • Meeting/Call ID
  • Good call stream count (streams without any disruption)
  • Bad call stream count (streams affected by jitter, packet loss, or round trip)
  • Unclassified stream count (streams where the endpoint doesn’t provide metrics to compute stream quality)
  • Poor percentage
  • Total audio stream count

Sample Output:
Teams Audio quality report

How Does This Script Address Poor Audio Issues?

This report helps you troubleshoot Microsoft Teams audio quality issues like “voice sounds robotic,” “walkie-talkie effect,” and “missing words and syllables.” Because the poor audio stream count depends on metrics like jitter, round trip, and packet loss.

  • So, once identified, you can take corrective actions, such as those mentioned in the network quality section, to improve the audio quality of future calls.

4. Monitor MS Teams Video Quality Reports Using PowerShell

Video quality problems while attending Microsoft Teams meetings normally or via using avatars in microsoft Teams can heavily hinder the whole effective communication. You can use this script with “-VideoHealth” parameter to identify meetings that have video quality issues like pixelation, freezing, or stuttering.

.\TeamsMeetingCallQualityStatisticsReport.ps1 -ReportRequired VideoHealth 

This report will give you insights into,

  • Meeting/Call ID
  • Video Call Stream Counts: Good, Bad, Unclassified
  • Poor Video Call Percentage
  • Total Video Stream Count

Sample Output:
Teams Video quality report

How Does this Script Solve Poor Video Quality Issues?

By analyzing meetings with a high bad video stream count, you can identify users facing poor video quality issues recently. This allows you to investigate potential causes such as insufficient bandwidth, hardware limitations, or network problems, and take steps to improve video streaming quality in the future.

5. Retrieve App Sharing Health Report Using PowerShell

In Microsoft Teams, video-based screen sharing (VBSS) allows you to share the contents of a specific program or window on your screen with other participants during a meeting or call. Microsoft teams call quality issues during such screen sharing can disrupt the whole meeting. To monitor the screen sharing health, you run this script with “-ScreenSharingHealth” parameter.

.\TeamsMeetingCallQualityStatisticsReport.ps1 -ReportRequired ScreenSharingHealth 

This script generates a comprehensive report containing essential insights such as meeting/call ID, the count of good VBSS streams, bad VBSS stream count, unclassified VBSS stream count, the percentage of poor VBSS stream count, and the total count of VBSS streams.

Sample Report:

Teams screen sharing report

Why Do You Need to Export the App Sharing Report?

As an administrator, this script empowers you to export and analyze the health of app sharing. By doing so, you can ensure that all meetings involving app sharing proceed smoothly.

6. Get Device Usage Statistics in Microsoft Teams

Sometimes, the issue isn’t with the network but with the users’ devices. Even audio and video quality problems can stem from the devices used by the meeting organizer and attendees. You can use this PowerShell script with “-DeviceUsed” parameter and analyze device usage by the users during meetings.

.\TeamsCallQualityStatisticsReport.ps1 -ReportRequired DeviceUsed

This script will export details like meeting date, meeting/call ID, a device used by the server, a device used by the client, total audio stream count, server device count, and client user device count.

Sample Output:

Teams device used report

Why to View the Device Usage Report of Teams Meetings?

This script helps you identify call quality issues by examining which devices users experience problems with. Issues may arise from outdated devices, high CPU usage, and other device-related factors. By identifying problematic devices, you can ask users to check and rectify issues on their end, improving the overall call quality.

That’s it! I hope this PowerShell script helps you monitor and understand the call quality logging and metrics. So, proactively monitor meeting call quality in Teams from today! Furthermore, if you have any queries regarding this call performance tracing script, you can reach out to us through the comment section. Happy scripting!

Check Teams Meeting Call Quality Using PowerShell

by Sudha time to read: 7 min