Optimized.Mga.Report.psm1
#region functions #region Azure AD activity reports #region Directory audit function Get-MgaReportdirectoryAudits { [CmdletBinding()] param ( ) begin { $null = Test-MgaRole -RoleType 'AzureAD' $URL = 'https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$top=999' Write-Verbose "Get-MgaReportdirectoryAudits: begin: URL: $URL" } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportdirectoryAudits: Getting results | Result count: $($GetMga.Count)" $ReportsList = $GetMga } end { return $ReportsList } } function Get-MgaReportdirectoryAudit { [CmdletBinding()] param ( [parameter(mandatory = $true)] $AuditId ) begin { $null = Test-MgaRole -RoleType 'AzureAD' $URL = 'https://graph.microsoft.com/v1.0/auditLogs/directoryAudits/{0}' -f $AuditId Write-Verbose "Get-MgaReportdirectoryAudit: begin: URL: $URL" } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportdirectoryAudit: Getting results | Result count: $($GetMga.Count)" $ReportsList = $GetMga } end { return $ReportsList } } #endregion Directory audit #region Sign-in function Get-MgaReportsignIns { [CmdletBinding()] param ( ) begin { $null = Test-MgaRole -RoleType 'AzureAD' $URL = 'https://graph.microsoft.com/v1.0/auditLogs/signIns?$top=999' Write-Verbose "Get-MgaReportsignIns: begin: URL: $URL" } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportsignIns: Getting results | Result count: $($GetMga.Count)" $ReportsList = $GetMga } end { return $ReportsList } } function Get-MgaReportsignIn { [CmdletBinding()] param ( [parameter(mandatory = $true)] $SignInId ) begin { $null = Test-MgaRole -RoleType 'AzureAD' $URL = 'https://graph.microsoft.com/v1.0/auditLogs/signIns/{0}' -f $SignInId Write-Verbose "Get-MgaReportsignIn: begin: URL: $URL" } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportsignIn: Getting results | Result count: $($GetMga.Count)" $ReportsList = $GetMga } end { return $ReportsList } } #endregion #region Provisioning function Get-MgaReportprovisioningObjectSummary { [CmdletBinding()] param ( ) begin { $null = Test-MgaRole -RoleType 'AzureAD' $URL = 'https://graph.microsoft.com/v1.0/auditLogs/provisioning?$top=999' Write-Verbose "Get-MgaReportprovisioningObjectSummary: begin: URL: $URL" } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportprovisioningObjectSummary: Getting results | Result count: $($GetMga.Count)" $ReportsList = $GetMga } end { return $ReportsList } } #endregion #endregion AzureAD activity reports #region Microsoft 365 usage reports #region Microsoft Teams device usage function Get-MgaReportTeamsDeviceUsageUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportTeamsDeviceUsageUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getTeamsDeviceUsageUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportTeamsDeviceUsageUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportTeamsDeviceUsageUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportTeamsDeviceUsageUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' UsedWeb = $ReportItem.'Used Web' UsedWindowsPhone = $ReportItem.'Used Windows Phone' UsediOS = $ReportItem.'Used iOS' UsedMac = $ReportItem.'Used Mac' UsedAndroidPhone = $ReportItem.'Used Android Phone' UsedWindows = $ReportItem.'Used Windows' } if ($ReportItem.'Is Deleted' -eq $true) { $Object.DeletedDate = $ReportItem.'Deleted Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportTeamsDeviceUsageUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportTeamsDeviceUsageUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getTeamsDeviceUsageUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportTeamsDeviceUsageUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportTeamsDeviceUsageUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportTeamsDeviceUsageUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Web = $ReportItem.Web WindowsPhone = $ReportItem.'Windows Phone' AndroidPhone = $ReportItem.'Android Phone' iOS = $ReportItem.'iOS' Mac = $ReportItem.'Mac' Windows = $ReportItem.'Windows' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportTeamsDeviceUsageDistributionUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportTeamsDeviceUsageDistributionUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getTeamsDeviceUsageDistributionUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportTeamsDeviceUsageDistributionUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportTeamsDeviceUsageDistributionUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportTeamsDeviceUsageDistributionUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Web = $ReportItem.Web WindowsPhone = $ReportItem.'Windows Phone' AndroidPhone = $ReportItem.'Android Phone' iOS = $ReportItem.'iOS' Mac = $ReportItem.'Mac' Windows = $ReportItem.'Windows' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Microsoft Teams device usage #region Microsoft Teams user activity function Get-MgaReportTeamsUserActivityUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportTeamsUserActivityUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getTeamsUserActivityUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportTeamsUserActivityUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportTeamsUserActivityUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportTeamsUserActivityUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $AssignedProducts = $null $AssignedProducts = $ReportItem.'Assigned Products'.Split('+').Trim() $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' LastActivityDate = $ReportItem.'Last Activity Date' IsDeleted = $ReportItem.'Is Deleted' AssignedProducts = $AssignedProducts TeamChatMessageCount = $ReportItem.'Team Chat Message Count' PrivateChatMessageCount = $ReportItem.'Private Chat Message Count' CallCount = $ReportItem.'Call Count' MeetingCount = $ReportItem.'Meeting Count' HasOtherAction = $ReportItem.'Has Other Action' } if ($ReportItem.'Is Deleted' -eq $true) { $Object.DeletedDate = $ReportItem.'Deleted Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportTeamsUserActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportTeamsUserActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getTeamsUserActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportTeamsUserActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportTeamsUserActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportTeamsUserActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ReportDate = $ReportItem.'Report Date' TeamChatMessages = $ReportItem.'Team Chat Messages' PrivateChatMessages = $ReportItem.'Private Chat Messages' Calls = $ReportItem.Calls Meetings = $ReportItem.Meetings } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportTeamsUserActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportTeamsUserActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getTeamsUserActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportTeamsUserActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportTeamsUserActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportTeamsUserActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ReportDate = $ReportItem.'Report Date' TeamChatMessages = $ReportItem.'Team Chat Messages' PrivateChatMessages = $ReportItem.'Private Chat Messages' Calls = $ReportItem.Calls Meetings = $ReportItem.Meetings OtherActions = $ReportItem.'Other Actions' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Microsoft Teams user activity #region Outlook Activity function Get-MgaReportEmailActivityUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportEmailActivityUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getEmailActivityUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportEmailActivityUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportEmailActivityUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportEmailActivityUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $AssignedProducts = $null $AssignedProducts = $ReportItem.'Assigned Products'.Split('+').Trim() $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' DisplayName = $ReportItem.'Display Name' IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' SendCount = $ReportItem.'Send Count' ReceiveCount = $ReportItem.'Receive Count' ReadCount = $ReportItem.'Read Count' AssignedProducts = $AssignedProducts } if ($ReportItem.'Is Deleted' -eq $true) { $Object.DeletedDate = $ReportItem.'Deleted Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportEmailActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportEmailActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getEmailActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportEmailActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportEmailActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportEmailActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Send = $ReportItem.Send Receive = $ReportItem.Receive Read = $ReportItem.Read ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportEmailActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportEmailActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getEmailActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportEmailActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportEmailActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportEmailActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Send = $ReportItem.Send Receive = $ReportItem.Receive Read = $ReportItem.Read ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Outlook Activity #region Outlook app usage function Get-MgaReportEmailAppUsageUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportEmailAppUsageUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getEmailAppUsageUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportEmailAppUsageUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportEmailAppUsageUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportEmailAppUsageUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' DisplayName = $ReportItem.'Display Name' IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' MailForMac = $ReportItem.'Mail For Mac' OutlookForMac = $ReportItem.'Outlook For Mac' OutlookForWindows = $ReportItem.'Outlook For Windows' OutlookForMobile = $ReportItem.'Outlook For Mobile' OtherForMobile = $ReportItem.'Other For Mobile' OutlookForWeb = $ReportItem.'Outlook For Web' POP3App = $ReportItem.'POP3 App' IMAP4App = $ReportItem.'IMAP4 App' SMTPApp = $ReportItem.'SMTP App' } if ($ReportItem.'Is Deleted' -eq $true) { $Object.DeletedDate = $ReportItem.'Deleted Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportEmailAppUsageAppsUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportEmailAppUsageAppsUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getEmailAppUsageAppsUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportEmailAppUsageAppsUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportEmailAppUsageAppsUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportEmailAppUsageAppsUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ MailForMac = $ReportItem.'Mail For Mac' OutlookForMac = $ReportItem.'Outlook For Mac' OutlookForWindows = $ReportItem.'Outlook For Windows' OutlookForMobile = $ReportItem.'Outlook For Mobile' OtherForMobile = $ReportItem.'Other For Mobile' OutlookForWeb = $ReportItem.'Outlook For Web' POP3App = $ReportItem.'POP3 App' IMAP4App = $ReportItem.'IMAP4 App' SMTPApp = $ReportItem.'SMTP App' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportEmailAppUsageUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportEmailAppUsageUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getEmailAppUsageUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportEmailAppUsageUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportEmailAppUsageUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportEmailAppUsageUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ MailForMac = $ReportItem.'Mail For Mac' OutlookForMac = $ReportItem.'Outlook For Mac' OutlookForWindows = $ReportItem.'Outlook For Windows' OutlookForMobile = $ReportItem.'Outlook For Mobile' OtherForMobile = $ReportItem.'Other For Mobile' OutlookForWeb = $ReportItem.'Outlook For Web' POP3App = $ReportItem.'POP3 App' IMAP4App = $ReportItem.'IMAP4 App' SMTPApp = $ReportItem.'SMTP App' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportEmailAppUsageVersionsUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportEmailAppUsageVersionsUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getEmailAppUsageVersionsUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportEmailAppUsageVersionsUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportEmailAppUsageVersionsUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportEmailAppUsageVersionsUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Outlook2016 = $ReportItem.'Outlook 2016' Outlook2013 = $ReportItem.'Outlook 2013' Outlook2010 = $ReportItem.'Outlook 2010' Outlook2007 = $ReportItem.'Outlook 2007' Undetermined = $ReportItem.Undetermined OutlookM365 = $ReportItem.'Outlook M365' Outlook2019 = $ReportItem.'Outlook 2019' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Outlook app usage #region Outlook mailbox usage function Get-MgaReportMailboxUsageDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportMailboxUsageDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getMailboxUsageDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportMailboxUsageDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportMailboxUsageDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportMailboxUsageDetail: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ DisplayName = $ReportItem.'Display Name' UserPrincipalName = $ReportItem.'User Principal Name' SizeInGb = [math]::Round(((($ReportItem.'Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) CreatedDate = $ReportItem.'Created Date' IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' ItemCount = $ReportItem.'Item Count' IssueWarningQuotaInGB = [math]::Round(((($ReportItem.'Issue Warning Quota (Byte)') / 1024 / 1024 / 1024)), 2) ProhibitSendQuotaInGB = [math]::Round(((($ReportItem.'Prohibit Send Quota (Byte)') / 1024 / 1024 / 1024)), 2) ProhibitSendReceiveQuotaInGb = [math]::Round(((($ReportItem.'Prohibit Send/Receive Quota (Byte)') / 1024 / 1024 / 1024)), 2) DeletedItemCount = $ReportItem.'Deleted Item Count' DeletedItemSizeInGb = [math]::Round(((($ReportItem.'Deleted Item Size (Byte)') / 1024 / 1024 / 1024)), 2) DeletedItemQuotaInGb = [math]::Round(((($ReportItem.'Deleted Item Quota (Byte)') / 1024 / 1024 / 1024)), 2) HasArchive = $ReportItem.'Has Archive' } if ($ReportItem.'Is Deleted' -eq $true) { $Object.DeletedDate = $ReportItem.'Deleted Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportMailboxUsageMailboxCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportMailboxUsageMailboxCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getMailboxUsageMailboxCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportMailboxUsageMailboxCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportMailboxUsageMailboxCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportMailboxUsageMailboxCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Total = $ReportItem.Total Active = $ReportItem.Active ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportMailboxUsageQuotaStatusMailboxCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportMailboxUsageQuotaStatusMailboxCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getMailboxUsageQuotaStatusMailboxCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportMailboxUsageQuotaStatusMailboxCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportMailboxUsageQuotaStatusMailboxCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportMailboxUsageQuotaStatusMailboxCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ UnderLimit = $ReportItem.'Under Limit' WarningIssued = $ReportItem.'Warning Issued' SendProhibited = $ReportItem.'Send Prohibited' SendReceiveProhibited = $ReportItem.'Send/Receive Prohibited' Indeterminate = $ReportItem.Indeterminate ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportMailboxUsageStorage { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportMailboxUsageStorage: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getMailboxUsageStorage(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportMailboxUsageStorage: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportMailboxUsageStorage: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportMailboxUsageStorage: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ StorageUsedInGb = [math]::Round(((($ReportItem.'Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Outlook mailbox usage #region Microsoft 365 activations function Get-MgaReportOffice365ActivationsUserDetail { [CmdletBinding()] param ( ) begin { $null = Test-MgaRole -RoleType 'O365' $URL = "https://graph.microsoft.com/v1.0/reports/getOffice365ActivationsUserDetail" Write-Verbose "Get-MgaReportOffice365ActivationsUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOffice365ActivationsUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOffice365ActivationsUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' DisplayName = $ReportItem.'Display Name' ProductType = $ReportItem.'Product Type' LastActivatedDate = $ReportItem.'Last Activated Date' Windows = $ReportItem.Windows Mac = $ReportItem.Mac Windows10Mobile = $ReportItem.'Windows 10 Mobile' iOS = $ReportItem.iOS Android = $ReportItem.Android ActivatedOnSharedComputer = $ReportItem.'Activated On Shared Computer' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOffice365ActivationCounts { [CmdletBinding()] param ( ) begin { $null = Test-MgaRole -RoleType 'O365' $URL = "https://graph.microsoft.com/v1.0/reports/getOffice365ActivationCounts" Write-Verbose "Get-MgaReportOffice365ActivationCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOffice365ActivationCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOffice365ActivationCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ProductType = $ReportItem.'Product Type' Windows = $ReportItem.Windows Mac = $ReportItem.Mac Windows10Mobile = $ReportItem.'Windows 10 Mobile' iOS = $ReportItem.iOS Android = $ReportItem.Android } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOffice365ActivationsUserCounts { [CmdletBinding()] param ( ) begin { $null = Test-MgaRole -RoleType 'O365' $URL = "https://graph.microsoft.com/v1.0/reports/getOffice365ActivationsUserCounts" Write-Verbose "Get-MgaReportOffice365ActivationsUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOffice365ActivationsUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOffice365ActivationsUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ProductType = $ReportItem.'Product Type' Assigned = $ReportItem.Assigned Activated = $ReportItem.Activated SharedComputerActivation = $ReportItem.'Shared Computer Activation' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Microsoft 365 activations #region Microsoft 365 groups activity function Get-MgaReportOffice365GroupsActivityDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOffice365GroupsActivityDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOffice365GroupsActivityDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOffice365GroupsActivityDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOffice365GroupsActivityDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOffice365GroupsActivityDetail: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ GroupDisplayName = $ReportItem.'Group Display Name' IsDeleted = $ReportItem.'Is Deleted' OwnerPrincipalName = $ReportItem.'Owner Principal Name' LastActivityDate = $ReportItem.'Last Activity Date' GroupType = $ReportItem.'Group Type' MemberCount = $ReportItem.'Member Count' ExternalMemberCount = $ReportItem.'External Member Count' ExchangeReceivedEmailCount = $ReportItem.'Exchange Received Email Count' SharePointActiveFileCount = $ReportItem.'SharePoint Active File Count' YammerPostedMessageCount = $ReportItem.'Yammer Posted Message Count' YammerReadMessageCount = $ReportItem.'Yammer Read Message Count' YammerLikedMessageCount = $ReportItem.'Yammer Liked Message Count' ExchangeMailboxTotalItemCount = $ReportItem.'Exchange Mailbox Total Item Count' ExchangeMailboxStorageUsedInGb = [math]::Round(((($ReportItem.'Exchange Mailbox Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) SharePointTotalFileCount = $ReportItem.'SharePoint Total File Count' SharePointSiteStorageUsedInGb = [math]::Round(((($ReportItem.'SharePoint Site Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) GroupId = $ReportItem.'Group Id' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOffice365GroupsActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOffice365GroupsActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOffice365GroupsActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOffice365GroupsActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOffice365GroupsActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOffice365GroupsActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ExchangeEmailsReceived = $ReportItem.'Exchange Emails Received' YammerMessagesPosted = $ReportItem.'Yammer Messages Posted' YammerMessagesRead = $ReportItem.'Yammer Messages Read' YammerMessagesLiked = $ReportItem.'Yammer Messages Liked' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOffice365GroupsActivityGroupCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOffice365GroupsActivityGroupCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOffice365GroupsActivityGroupCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOffice365GroupsActivityGroupCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOffice365GroupsActivityGroupCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOffice365GroupsActivityGroupCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Total = $ReportItem.Total Active = $ReportItem.Active ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOffice365GroupsActivityStorage { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOffice365GroupsActivityStorage: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOffice365GroupsActivityStorage(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOffice365GroupsActivityStorage: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOffice365GroupsActivityStorage: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOffice365GroupsActivityStorage: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ MailboxStorageUsedInGb = [math]::Round(((($ReportItem.'Mailbox Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) SiteStorageUsedInGb = [math]::Round(((($ReportItem.'Site Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOffice365GroupsActivityFileCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOffice365GroupsActivityFileCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOffice365GroupsActivityFileCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOffice365GroupsActivityFileCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOffice365GroupsActivityFileCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOffice365GroupsActivityFileCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Total = $ReportItem.Total Active = $ReportItem.Active ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Microsoft 365 groups activity #region OneDrive activity function Get-MgaReportOneDriveActivityUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOneDriveActivityUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOneDriveActivityUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOneDriveActivityUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOneDriveActivityUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOneDriveActivityUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $AssignedProducts = $null $AssignedProducts = $ReportItem.'Assigned Products'.Split('+').Trim() $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' ViewedOrEditedFileCount = $ReportItem.'Viewed Or Edited File Count' SyncedFileCount = $ReportItem.'Synced File Count' SharedInternallyFileCount = $ReportItem.'Shared Internally File Count' SharedExternallyFileCount = $ReportItem.'Shared Externally File Count' AssignedProducts = $AssignedProducts } if ($ReportItem.'Is Deleted' -eq $true) { $Object.DeletedDate = $ReportItem.'Deleted Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOneDriveActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOneDriveActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOneDriveActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOneDriveActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOneDriveActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOneDriveActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ViewedOrEdited = $ReportItem.'Viewed Or Edited' Synced = $ReportItem.'Synced' SharedInternally = $ReportItem.'Shared Internally' SharedExternally = $ReportItem.'Shared Externally' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOneDriveActivityFileCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOneDriveActivityFileCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOneDriveActivityFileCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOneDriveActivityFileCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOneDriveActivityFileCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOneDriveActivityFileCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ViewedOrEdited = $ReportItem.'Viewed Or Edited' Synced = $ReportItem.'Synced' SharedInternally = $ReportItem.'Shared Internally' SharedExternally = $ReportItem.'Shared Externally' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion OneDrive activity #region OneDrive usage function Get-MgaReportOneDriveUsageAccountDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOneDriveUsageAccountDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOneDriveUsageAccountDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOneDriveUsageAccountDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOneDriveUsageAccountDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOneDriveUsageAccountDetail: Converting results" foreach ($ReportItem in $GetMga) { $SizeInGb = $null $AllocatedInGb = $null $SizeInGb = [math]::Round(((($ReportItem.'Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) $AllocatedInGb = [math]::Round(((($ReportItem.'Storage Allocated (Byte)') / 1024 / 1024 / 1024)), 2) $Object = @{ DisplayName = $ReportItem.'Owner Display Name' UserPrincipalName = $ReportItem.'Owner Principal Name' SiteUrl = $ReportItem.'Site URL' SizeInGb = $SizeInGb AllocatedSizeInGb = $AllocatedInGb FreeSizeInGb = ($AllocatedInGb - $SizeInGb) IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' FileCount = $ReportItem.'File Count' ActiveFileCount = $ReportItem.'Active File Count' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOneDriveUsageAccountCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOneDriveUsageAccountCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOneDriveUsageAccountCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOneDriveUsageAccountCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOneDriveUsageAccountCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOneDriveUsageAccountCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ SiteType = $ReportItem.'Site Type' Total = $ReportItem.Total Active = $ReportItem.Active ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOneDriveUsageFileCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOneDriveUsageFileCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOneDriveUsageFileCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOneDriveUsageFileCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOneDriveUsageFileCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOneDriveUsageFileCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ SiteType = $ReportItem.'Site Type' Total = $ReportItem.Total Active = $ReportItem.Active ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportOneDriveUsageStorage { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportOneDriveUsageStorage: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getOneDriveUsageStorage(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportOneDriveUsageStorage: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportOneDriveUsageStorage: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportOneDriveUsageStorage: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ SiteType = $ReportItem.'Site Type' StorageUsedInGb = [math]::Round(((($ReportItem.'Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion OneDrive usage #region SharePoint activity function Get-MgaReportSharePointActivityUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointActivityUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointActivityUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointActivityUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointActivityUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointActivityUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $AssignedProducts = $null $AssignedProducts = $ReportItem.'Assigned Products'.Split('+').Trim() $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' ViewedOrEditedFileCount = $ReportItem.'Viewed Or Edited File Count' SyncedFileCount = $ReportItem.'Synced File Count' SharedInternallyFileCount = $ReportItem.'Shared Internally File Count' SharedExternallyFileCount = $ReportItem.'Shared Externally File Count' AssignedProducts = $AssignedProducts } if ($ReportItem.'Is Deleted' -eq $true) { $Object.DeletedDate = $ReportItem.'Deleted Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSharePointActivityFileCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointActivityFileCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointActivityFileCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointActivityFileCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointActivityFileCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointActivityFileCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ViewedOrEditedFileCount = $ReportItem.'Viewed Or Edited' SyncedFileCount = $ReportItem.'Synced' SharedInternallyFileCount = $ReportItem.'Shared Internally' SharedExternallyFileCount = $ReportItem.'Shared Externally' ReportDate = $ReportItem.'report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSharePointActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ VisitedPage = $ReportItem.'Visited Page' ViewedOrEditedFileCount = $ReportItem.'Viewed Or Edited' SyncedFileCount = $ReportItem.'Synced' SharedInternallyFileCount = $ReportItem.'Shared Internally' SharedExternallyFileCount = $ReportItem.'Shared Externally' ReportDate = $ReportItem.'report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSharePointActivityPages { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointActivityPages: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointActivityPages(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointActivityPages: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointActivityPages: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointActivityPages: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ VisitedPageCount = $ReportItem.'Visited Page Count' ReportDate = $ReportItem.'report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion SharePoint activity #region SharePoint site usage function Get-MgaReportSharePointSiteUsageDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointSiteUsageDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointSiteUsageDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointSiteUsageDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointSiteUsageDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointSiteUsageDetail: Converting results" foreach ($ReportItem in $GetMga) { $SizeInGb = $null $AllocatedInGb = $null $SizeInGb = [math]::Round(((($ReportItem.'Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) $AllocatedInGb = [math]::Round(((($ReportItem.'Storage Allocated (Byte)') / 1024 / 1024 / 1024)), 2) $Object = @{ SiteId = $ReportItem.'Site Id' SiteURL = $ReportItem.'Site URL' OwnerDisplayName = $ReportItem.'Owner Display Name' IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' FileCount = $ReportItem.'File Count' ActiveFileCount = $ReportItem.'Active File Count' PageViewCount = $ReportItem.'Page View Count' VisitedPageCount = $ReportItem.'Visited Page Count' StorageUsedInGb = $SizeInGb StorageAllocatedInGb = $AllocatedInGb FreeSizeInGb = ($AllocatedInGb - $SizeInGb) RootWebTemplate = $ReportItem.'Root Web Template' OwnerPrincipalName = $ReportItem.'Owner Principal Name' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSharePointSiteUsageFileCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointSiteUsageFileCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointSiteUsageFileCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointSiteUsageFileCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointSiteUsageFileCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointSiteUsageFileCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ SiteType = $ReportItem.'Site Type' Total = $ReportItem.Total Active = $ReportItem.Active ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSharePointSiteUsageSiteCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointSiteUsageSiteCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointSiteUsageSiteCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointSiteUsageSiteCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointSiteUsageSiteCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointSiteUsageSiteCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ SiteType = $ReportItem.'Site Type' Total = $ReportItem.Total Active = $ReportItem.Active ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSharePointSiteUsageStorage { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointSiteUsageStorage: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointSiteUsageStorage(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointSiteUsageStorage: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointSiteUsageStorage: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointSiteUsageStorage: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ SiteType = $ReportItem.'Site Type' StorageUsedInGb = [math]::Round(((($ReportItem.'Storage Used (Byte)') / 1024 / 1024 / 1024)), 2) ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSharePointSiteUsagePages { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSharePointSiteUsagePages: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSharePointSiteUsagePages(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSharePointSiteUsagePages: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSharePointSiteUsagePages: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSharePointSiteUsagePages: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ SiteType = $ReportItem.'Site Type' PageViewCount = $ReportItem.'Page View Count' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion SharePoint site usage #region Skype for Business activity function Get-MgaReportSkypeForBusinessActivityUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessActivityUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessActivityUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessActivityUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessActivityUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessActivityUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $AssignedProducts = $null $AssignedProducts = $ReportItem.'Assigned Products'.Split('+').Trim() $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' IsDeleted = $ReportItem.'Is Deleted' LastActivityDate = $ReportItem.'Last Activity Date' TotalPeertopeerSessionCount = $ReportItem.'Total Peer-to-peer Session Count' TotalOrganizedConferenceCount = $ReportItem.'Total Organized Conference Count' TotalParticipatedConferenceCount = $ReportItem.'Total Participated Conference Count' PeertopeerLastActivityDate = $ReportItem.'Peer-to-peer Last Activity Date' OrganizedConferenceLastActivityDate = $ReportItem.'Organized Conference Last Activity Date' ParticipatedConferenceLastActivityDate = $ReportItem.'Participated Conference Last Activity Date' PeertopeerIMCount = $ReportItem.'Peer-to-peer IM Count' PeertopeerAudioCount = $ReportItem.'Peer-to-peer Audio Count' PeertopeerAudioMinutes = $ReportItem.'Peer-to-peer Audio Minutes' PeertopeerVideoCount = $ReportItem.'Peer-to-peer Video Count' PeertopeerVideoMinutes = $ReportItem.'Peer-to-peer Video Minutes' PeertopeerAppSharingCount = $ReportItem.'Peer-to-peer App Sharing Count' PeertopeerFileTransferCount = $ReportItem.'Peer-to-peer File Transfer Count' OrganizedConferenceIMCount = $ReportItem.'Organized Conference IM Count' OrganizedConferenceAudioVideoCount = $ReportItem.'Organized Conference Audio/Video Count' OrganizedConferenceAudioVideoMinutes = $ReportItem.'Organized Conference Audio/Video Minutes' OrganizedConferenceAppSharingCount = $ReportItem.'Organized Conference App Sharing Count' OrganizedConferenceWebCount = $ReportItem.'Organized Conference Web Count' OrganizedConferenceDialinout3rdPartyCount = $ReportItem.'Organized Conference Dial-in/out 3rd Party Count' OrganizedConferenceDialinoutMicrosoftCount = $ReportItem.'Organized Conference Dial-in/out Microsoft Count' OrganizedConferenceDialinMicrosoftMinutes = $ReportItem.'Organized Conference Dial-in Microsoft Minutes' OrganizedConferenceDialoutMicrosoftMinutes = $ReportItem.'Organized Conference Dial-out Microsoft Minutes' ParticipatedConferenceIMCount = $ReportItem.'Participated Conference IM Count' ParticipatedConferenceAudioVideoCount = $ReportItem.'Participated Conference Audio/Video Count' ParticipatedConferenceAudioVideoMinutes = $ReportItem.'Participated Conference Audio/Video Minutes' ParticipatedConferenceAppSharingCount = $ReportItem.'Participated Conference App Sharing Count' ParticipatedConferenceWebCount = $ReportItem.'Participated Conference Web Count' ParticipatedConferenceDialinout3rdPartyCount = $ReportItem.'Participated Conference Dial-in/out 3rd Party Count' AssignedProducts = $AssignedProducts } if ($ReportItem.'Is Deleted' -eq $true) { $Object.DeletedDate = $ReportItem.'Deleted Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ReportDate = $ReportItem.'Report Date' Peertopeer = $ReportItem.'Peer-to-peer' Organized = $ReportItem.Organized Participated = $ReportItem.Participated } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ ReportDate = $ReportItem.'Report Date' Peertopeer = $ReportItem.'Peer-to-peer' Organized = $ReportItem.Organized Participated = $ReportItem.Participated } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Skype for Business activity #region Skype for Business device usage function Get-MgaReportSkypeForBusinessDeviceUsageUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessDeviceUsageUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' LastActivityDate = $ReportItem.'Last Activity Date' UsedWindows = $ReportItem.'Used Windows' UsedWindowsPhone = $ReportItem.'Used Windows Phone' UsedAndroidPhone = $ReportItem.'Used Android Phone' UsediPhone = $ReportItem.'Used iPhone' UsediPad = $ReportItem.'Used iPad' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessDeviceUsageDistributionUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageDistributionUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessDeviceUsageDistributionUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageDistributionUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageDistributionUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageDistributionUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Windows = $ReportItem.Windows WindowsPhone = $ReportItem.'Windows Phone' AndroidPhone = $ReportItem.'Android Phone' iPhone = $ReportItem.Iphone iPad = $ReportItem.Ipad } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessDeviceUsageUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessDeviceUsageUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessDeviceUsageUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Windows = $ReportItem.Windows WindowsPhone = $ReportItem.'Windows Phone' AndroidPhone = $ReportItem.'Android Phone' iPhone = $ReportItem.Iphone iPad = $ReportItem.Ipad ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Skype for Business device usage #region Skype for Business organizer activity function Get-MgaReportSkypeForBusinessOrganizerActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessOrganizerActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ IM = $ReportItem.'IM' AudioVideo = $ReportItem.'Audio/Video' AppSharing = $ReportItem.'App Sharing' Web = $ReportItem.'Web' Dialinout3rdParty = $ReportItem.'Dial-in/out 3rd Party' DialinoutMicrosoft = $ReportItem.'Dial-in/out Microsoft' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessOrganizerActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessOrganizerActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ IM = $ReportItem.'IM' AudioVideo = $ReportItem.'Audio/Video' AppSharing = $ReportItem.'App Sharing' Web = $ReportItem.'Web' Dialinout3rdParty = $ReportItem.'Dial-in/out 3rd Party' DialinoutMicrosoft = $ReportItem.'Dial-in/out Microsoft' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessOrganizerActivityMinuteCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityMinuteCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessOrganizerActivityMinuteCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityMinuteCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityMinuteCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessOrganizerActivityMinuteCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ AudioVideo = $ReportItem.'Audio/Video' ReportDate = $ReportItem.'Report Date' DialinMicrosoft = $ReportItem.'Dial-in Microsoft' DialoutMicrosoft = $ReportItem.'Dial-out Microsoft' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Skype for Business organizer activity #region Skype for Business participant activity function Get-MgaReportSkypeForBusinessParticipantActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessParticipantActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ IM = $ReportItem.'IM' AudioVideo = $ReportItem.'Audio/Video' AppSharing = $ReportItem.'App Sharing' Web = $ReportItem.'Web' Dialinout3rdParty = $ReportItem.'Dial-in/out 3rd Party' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessParticipantActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessParticipantActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ IM = $ReportItem.'IM' AudioVideo = $ReportItem.'Audio/Video' AppSharing = $ReportItem.'App Sharing' Web = $ReportItem.'Web' Dialinout3rdParty = $ReportItem.'Dial-in/out 3rd Party' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessParticipantActivityMinuteCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityMinuteCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessParticipantActivityMinuteCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityMinuteCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityMinuteCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessParticipantActivityMinuteCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ AudioVideo = $ReportItem.'Audio/Video' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Skype for Business participant activity #region Skype for Business peer-to-peer activity function Get-MgaReportSkypeForBusinessPeerToPeerActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessPeerToPeerActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ IM = $ReportItem.IM Audio = $ReportItem.Audio Video = $ReportItem.Video AppSharing = $ReportItem.'App Sharing' FileTransfer = $ReportItem.'File Transfer' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessPeerToPeerActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessPeerToPeerActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ IM = $ReportItem.IM Audio = $ReportItem.Audio Video = $ReportItem.Video AppSharing = $ReportItem.'App Sharing' FileTransfer = $ReportItem.'File Transfer' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportSkypeForBusinessPeerToPeerActivityMinuteCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityMinuteCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getSkypeForBusinessPeerToPeerActivityMinuteCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityMinuteCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityMinuteCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportSkypeForBusinessPeerToPeerActivityMinuteCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Audio = $ReportItem.Audio Video = $ReportItem.Video ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Skype for Business peer-to-peer activity #region Yammer activity function Get-MgaReportYammerActivityUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerActivityUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerActivityUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerActivityUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerActivityUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerActivityUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $AssignedProducts = $null $AssignedProducts = $ReportItem.'Assigned Products'.Split('+').Trim() $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' DisplayName = $ReportItem.'Display Name' UserState = $ReportItem.'User State' StateChangeDate = $ReportItem.'State Change Date' LastActivityDate = $ReportItem.'Last Activity Date' PostedCount = $ReportItem.'Posted Count' ReadCount = $ReportItem.'Read Count' LikedCount = $ReportItem.'Liked Count' AssignedProducts = $AssignedProducts } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportYammerActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = [PSCustomObject]@{ Liked = $ReportItem.Liked Posted = $ReportItem.Posted Read = $ReportItem.Read ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportYammerActivityUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerActivityUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerActivityUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerActivityUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerActivityUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerActivityUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Liked = $ReportItem.Liked Posted = $ReportItem.Posted Read = $ReportItem.Read ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Yammer activity #region Yammer device usage function Get-MgaReportYammerDeviceUsageUserDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerDeviceUsageUserDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerDeviceUsageUserDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerDeviceUsageUserDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerDeviceUsageUserDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerDeviceUsageUserDetail: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ UserPrincipalName = $ReportItem.'User Principal Name' DisplayName = $ReportItem.'Display Name' UserState = $ReportItem.'User State' StateChangeDate = $ReportItem.'State Change Date' LastActivityDate = $ReportItem.'Last Activity Date' UsedWeb = $ReportItem.'Used Web' UsedWindowsPhone = $ReportItem.'Used Windows Phone' UsedAndroidPhone = $ReportItem.'Used Android Phone' UsediPhone = $ReportItem.'Used iPhone' UsediPad = $ReportItem.'Used iPad' UsedOthers = $ReportItem.'Used Others' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportYammerDeviceUsageDistributionUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerDeviceUsageDistributionUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerDeviceUsageDistributionUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerDeviceUsageDistributionUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerDeviceUsageDistributionUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerDeviceUsageDistributionUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Web = $ReportItem.'Web' WindowsPhone = $ReportItem.'Windows Phone' AndroidPhone = $ReportItem.'Android Phone' iPhone = $ReportItem.'iPhone' iPad = $ReportItem.'iPad' Other = $ReportItem.'Other' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportYammerDeviceUsageUserCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerDeviceUsageUserCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerDeviceUsageUserCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerDeviceUsageUserCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerDeviceUsageUserCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerDeviceUsageUserCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Web = $ReportItem.'Web' WindowsPhone = $ReportItem.'Windows Phone' AndroidPhone = $ReportItem.'Android Phone' iPhone = $ReportItem.'iPhone' iPad = $ReportItem.'iPad' Other = $ReportItem.'Other' ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Yammer device usage #region Yammer groups activity function Get-MgaReportYammerGroupsActivityDetail { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerGroupsActivityDetail: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerGroupsActivityDetail(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerGroupsActivityDetail: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerGroupsActivityDetail: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerGroupsActivityDetail: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ GroupDisplayName = $ReportItem.'Group Display Name' IsDeleted = $ReportItem.'Is Deleted' OwnerPrincipalName = $ReportItem.'Owner Principal Name' LastActivityDate = $ReportItem.'Last Activity Date' GroupType = $ReportItem.'Group Type' Office365Connected = $ReportItem.'Office 365 Connected' MemberCount = $ReportItem.'Member Count' PostedCount = $ReportItem.'Posted Count' ReadCount = $ReportItem.'Read Count' LikedCount = $ReportItem.'Liked Count' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportYammerGroupsActivityGroupCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerGroupsActivityGroupCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerGroupsActivityGroupCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerGroupsActivityGroupCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerGroupsActivityGroupCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerGroupsActivityGroupCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Total = $ReportItem.Total Active = $ReportItem.Active ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } function Get-MgaReportYammerGroupsActivityCounts { [CmdletBinding()] param ( [ValidateSet("7", "30", "90", "180")] $Period = '7' ) begin { $null = Test-MgaRole -RoleType 'O365' Write-Verbose "Get-MgaReportYammerGroupsActivityCounts: begin: Period: D$Period" $URL = "https://graph.microsoft.com/v1.0/reports/getYammerGroupsActivityCounts(period='D{0}')" -f $Period Write-Verbose "Get-MgaReportYammerGroupsActivityCounts: begin: URL: $URL" $ReportsList = [System.Collections.Generic.List[Object]]::new() } process { $GetMga = Get-Mga $URL Write-Verbose "Get-MgaReportYammerGroupsActivityCounts: Getting results | Result count: $($GetMga.Count)" Write-Verbose "Get-MgaReportYammerGroupsActivityCounts: Converting results" foreach ($ReportItem in $GetMga) { $Object = @{ Liked = $ReportItem.Liked Posted = $ReportItem.Posted Read = $ReportItem.Read ReportDate = $ReportItem.'Report Date' } $ReportsList.Add([PSCustomObject]$Object) } } end { return $ReportsList } } #endregion Yammer groups activity #endregion 365 usage reports #endregion functions #region internal functions function Test-MgaRole { [CmdletBinding()] param ( [parameter(mandatory = $true)] [ValidateSet('O365', 'AzureAD')] $RoleType ) begin { $SufficientPermissions = $false if ((($RoleType -eq 'AzureAD') -and ($global:MgaReportRoleAzureAD -eq $true)) -or (($RoleType -eq 'O365') -and ($global:MgaReportRoleO365 -eq $true))) { $SufficientPermissions = $true } } process { if ($SufficientPermissions -ne $true) { $Roles = Show-MgaAccessToken -Roles if ($RoleType -eq 'O365') { $ReportsLog = $false foreach ($Role in $Roles) { if ($Role -eq 'Reports.Read.All') { $ReportsLog = $true } } if ($ReportsLog -eq $true) { $global:MgaReportRoleO365 = $true } else { throw "Missing Reports.Read.All permission for Microsoft Graph API to call Reports for $RoleType" } } elseif ($RoleType -eq 'AzureAD') { $AuditLog = $false $DirectoryLog = $false foreach ($Role in $Roles) { if ($Role -eq 'AuditLog.Read.All') { $AuditLog = $true } elseif (($Role -eq 'Directory.ReadWrite.All') -or ($Role -eq 'Directory.Read.All')) { $DirectoryLog = $true } } if (($AuditLog -eq $true) -and ($DirectoryLog -eq $true)) { $global:MgaReportRoleAzureAD = $true } elseif (($AuditLog -eq $false) -and ($DirectoryLog -eq $false)) { throw "Missing AuditLog.Read.All and Directory.ReadWrite.All or Directory.Read.All permission for Microsoft Graph API to call Reports for $RoleType" } elseif (($AuditLog -eq $true) -and ($DirectoryLog -eq $false)) { throw "Missing Directory.ReadWrite.All or Directory.Read.All permission for Microsoft Graph API to call Reports for $RoleType" } elseif (($AuditLog -eq $false) -and ($DirectoryLog -eq $true)) { throw "Missing AuditLog.Read.All permission for Microsoft Graph API to call Reports for $RoleType" } } } } end { if ((($RoleType -eq 'AzureAD') -and ($global:MgaReportRoleAzureAD -eq $true)) -or (($RoleType -eq 'O365') -and ($global:MgaReportRoleO365 -eq $true))) { return "Sufficient roles found for $RoleType reports" } } } #endregion internal functions |