private/review/admincenter/settings/Invoke-ReviewExoCalendarExternalSharing.ps1
function Invoke-ReviewExoCalendarExternalSharing { <# .SYNOPSIS Review if external calendar sharing policy is enabled. .DESCRIPTION Returns review object. .NOTES Requires the following modules: - ExchangeOnlineManagement .EXAMPLE Invoke-ReviewExoCalendarExternalSharing; #> [cmdletbinding()] param ( ) BEGIN { # Write progress. Write-Progress -Activity $MyInvocation.MyCommand -Status 'Running' -CurrentOperation $MyInvocation.MyCommand.Name -PercentComplete -1 -SecondsRemaining -1; # Write to log. Write-CustomLog -Category 'Exchange Online' -Subcategory 'Policy' -Message 'Getting all sharing policies' -Level Verbose; # Get all sharing policies. $sharingPolicies = Get-SharingPolicy; # Object array to store calendar sharing policies. $calendarSharingPolicies = New-Object System.Collections.ArrayList; } PROCESS { # Foreach sharing policy. foreach ($sharingPolicy in $sharingPolicies) { # If policy is disabled. if ($false -eq $sharingPolicy.Enabled) { # Write to log. Write-CustomLog -Category 'Exchange Online' -Subcategory 'Policy' -Message ("Sharing policy '{0}' is disabled" -f $sharingPolicy.Name) -Level Verbose; # Continue to next policy. continue; } # If calendar sharing is disabled. if ($sharingPolicy.Domains -notlike '*CalendarSharing*') { # Continue to next policy. continue; } # Write to log. Write-CustomLog -Category 'Exchange Online' -Subcategory 'Policy' -Message ("External calendar sharing is enabled in the sharing policy '{0}'" -f $sharingPolicy.Name) -Level Verbose; # Add to array. $calendarSharingPolicies += [PSCustomObject]@{ Name = $sharingPolicy.Name; Domains = $sharingPolicy.Domains -join '|'; Enabled = $sharingPolicy.Enabled; Default = $sharingPolicy.Default; }; } } END { # Bool for review flag. [bool]$reviewFlag = $false; # If review flag should be set. if ($calendarSharingPolicies.Count -gt 0) { # Should be reviewed. $reviewFlag = $true; } # Create new review object to return. [Review]$review = [Review]::new(); # Add to object. $review.Id = '489b0b3d-cf78-46a5-8366-84908dc05d5a'; $review.Category = 'Microsoft 365 Admin Center'; $review.Subcategory = 'Settings'; $review.Title = "Ensure 'External sharing' of calendars is not available"; $review.Data = $calendarSharingPolicies; $review.Review = $reviewFlag; # Print result. $review.PrintResult(); # Return object. return $review; } } |