public/cis/Test-MtCisThirdPartyFileSharing.ps1

<#
.SYNOPSIS
    Ensure third-party file sharing cloud services in Teams are disabled
 
.DESCRIPTION
    Ensure third-party file sharing cloud services in Teams are disabled
    CIS Microsoft 365 Foundations Benchmark v5.0.0
 
.EXAMPLE
    Test-MtCisThirdPartyFileSharing
 
    Returns true if all third-party file sharing cloud services in Teams are disabled
 
.LINK
    https://mycorp.dev/docs/commands/Test-MtCisThirdPartyFileSharing
#>

function Test-MtCisThirdPartyFileSharing {
    [CmdletBinding()]
    [OutputType([bool])]
    param()

    if (-not (Test-MtConnection Teams)) {
        Add-MtTestResultDetail -SkippedBecause NotConnectedTeams
        return $null
    }

    Write-Verbose "Test-MtCisThirdPartyFileSharing: Checking if third-party file sharing cloud services in Teams are disabled"

    $return = $true
    try {
        $thirdPartyCloudServices = Get-CsTeamsClientConfiguration | Select-Object AllowDropbox, AllowBox, AllowGoogleDrive, AllowShareFile, AllowEgnyte

        $passResult = "✅ Pass"
        $failResult = "❌ Fail"

        $result = "| Policy | Value | Status |`n"
        $result += "| --- | --- | --- |`n"

        ForEach ($thirdPartyProvider in ($thirdPartyCloudServices.PSObject.Properties)) {
            if ($thirdPartyProvider.Value -eq $false) {
                $result += "| $($thirdPartyProvider.Name) | $($thirdPartyProvider.Value) | $passResult |`n"
            } else {
                $result += "| $($thirdPartyProvider.Name) | $($thirdPartyProvider.Value) | $failResult |`n"
                $return = $false
            }
        }
        if ($return) {
            $testResultMarkdown = "Well done. All third-party cloud services are disabled.`n`n%TestResult%"
        } else {
            $testResultMarkdown = "All or specific third-party cloud services are enabled.`n`n%TestResult%"
        }
        $testResultMarkdown = $testResultMarkdown -replace "%TestResult%", $result
        Add-MtTestResultDetail -Result $testResultMarkdown
    } catch {
        $return = $false
        Write-Error $_.Exception.Message
    }
    return $return
}