source/05_Teams/Get-TeamsUserActivityCount.ps1
Function Get-TeamsUserActivityCount { [CmdletBinding()] param ( [Parameter()] [ValidateSet(7, 30, 90, 180)] [int] $ReportPeriod = 7, [Parameter()] [Switch] $IncludeNonLicensedUser, [Parameter()] [Switch] $Daily ) $ProgressPreference = 'SilentlyContinue' $uri = "https://graph.microsoft.com/beta/reports/getTeamsUserActivityCounts(period='D$($ReportPeriod)')" if ($IncludeNonLicensedUser) { $uri = "https://graph.microsoft.com/beta/reports/getTeamsUserActivityTotalCounts(period='D$($ReportPeriod)')" } try { $outFile = Get-OutputFileName $uri -ErrorAction Stop Invoke-MgGraphRequest -Method Get -Uri $uri -ContentType 'application/json' -ErrorAction Stop -OutputFilePath $outFile $result = Get-Content $outFile | ConvertFrom-Csv $result | Add-Member -MemberType ScriptProperty -Name 'Audio Duration (Minutes)' -Value { [System.Math]::Round((New-TimeSpan -Start ([datetime]$this.'Report Refresh Date') -End ([datetime]$this.'Report Refresh Date').Add($($this.'Audio Duration' -replace 'P', '' -replace 'DT', '.' -replace 'H', ':' -replace 'M', ':' -replace 'S', ''))).TotalMinutes, 2) } $result | Add-Member -MemberType ScriptProperty -Name 'Video Duration (Minutes)' -Value { [System.Math]::Round((New-TimeSpan -Start ([datetime]$this.'Report Refresh Date') -End ([datetime]$this.'Report Refresh Date').Add($($this.'Video Duration' -replace 'P', '' -replace 'DT', '.' -replace 'H', ':' -replace 'M', ':' -replace 'S', ''))).TotalMinutes, 2) } $result | Add-Member -MemberType ScriptProperty -Name 'Screen Sharing Duration (Minutes)' -Value { [System.Math]::Round((New-TimeSpan -Start ([datetime]$this.'Report Refresh Date') -End ([datetime]$this.'Report Refresh Date').Add($($this.'Screen Share Duration' -replace 'P', '' -replace 'DT', '.' -replace 'H', ':' -replace 'M', ':' -replace 'S', ''))).TotalMinutes, 2) } if ($Daily) { return $result } else { [PSCustomObject]@{ 'Report Refresh Date' = $result[0].'Report Refresh Date' 'Report Period' = $result[0].'Report Period' 'Team Chat Messages' = ($result | Measure-Object 'Team Chat Messages' -Sum).Sum 'Private Chat Messages' = ($result | Measure-Object 'Private Chat Messages' -Sum).Sum 'Calls' = ($result | Measure-Object 'Calls' -Sum).Sum 'Meetings' = ($result | Measure-Object 'Meetings' -Sum).Sum 'Meetings Organized Count' = ($result | Measure-Object 'Meetings Organized Count' -Sum).Sum 'Meetings Attended Count' = ($result | Measure-Object 'Meetings Attended Count' -Sum).Sum 'Post Messages' = ($result | Measure-Object 'Post Messages' -Sum).Sum 'Reply Messages' = ($result | Measure-Object 'Reply Messages' -Sum).Sum 'Audio Duration (Minutes)' = ($result | Measure-Object 'Audio Duration (Minutes)' -Sum).Sum 'Video Duration (Minutes)' = ($result | Measure-Object 'Video Duration (Minutes)' -Sum).Sum 'Screen Sharing Duration (Minutes)' = ($result | Measure-Object 'Screen Sharing Duration (Minutes)' -Sum).Sum } } } catch { SayError $_.Exception.Message return $null } } |