DSCResources/MSFT_FabricAdminTenantSettings/MSFT_FabricAdminTenantSettings.psm1

function Get-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param
    (
        [Parameter(Mandatory = $true)]
        [ValidateSet('Yes')]
        [System.String]
        $IsSingleInstance,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AADSSOForGateway,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminApisIncludeDetailedMetadata,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminApisIncludeExpressions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminCustomDisclaimer,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AISkillArtifactTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowAccessOverPrivateLinks,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVAuthenticationTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVLocalStorageV2Tenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVToExportDataToFileTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowEndorsementMasterDataSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowExternalDataSharingReceiverSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowExternalDataSharingSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowFreeTrial,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowGuestLookup,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowGuestUserToAccessSharedContent,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowPowerBIASDQOnTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowSendAOAIDataToOtherRegions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowSendNLToDaxDataToOtherRegions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowServicePrincipalsCreateAndUseProfiles,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowServicePrincipalsUseReadAdminAPIs,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AppPush,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ArtifactSearchTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASCollectQueryTextTelemetryTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASShareableCloudConnectionBindingSecurityModeTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASWritethruContinuousExportTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASWritethruTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutoInstallPowerBIAppInTeamsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutomatedInsightsEntryPoints,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutomatedInsightsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AzureMap,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BingMap,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockAccessFromPublicNetworks,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockAutoDiscoverAndPackageRefresh,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockProtectedLabelSharingToEntireOrg,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockResourceKeyAuthentication,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CDSAManagement,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CertifiedCustomVisualsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CertifyDatasets,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ConfigureFolderRetentionPeriod,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CreateAppWorkspaces,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CustomVisualsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DatamartTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DatasetExecuteQueries,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DevelopServiceApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsConsumption,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsSettingsCertified,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsSettingsPromoted,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DremioSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionDataSourceInheritanceSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionDownstreamInheritanceSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionEdit,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionLessElevated,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionWorkspaceAdminsOverrideAutomaticLabelsSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ElevatedGuestsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSecurityGroupsOnOutage,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionsToB2BUsers,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionsToExternalUsers,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Embedding,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableAOAI,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableDatasetInPlaceSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableExcelYellowIntegration,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableFabricAirflow,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableNLToDax,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableReassignDataDomainSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EsriVisual,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExpFlightingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportReport,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToCsv,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToExcelSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToImage,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToMHTML,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToPowerPoint,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToWord,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToXML,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportVisualImageTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExternalDatasetSharingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExternalSharingV2,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricAddPartnerWorkload,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricFeedbackTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricGAWorkloads,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricThirdPartyWorkloads,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitHubTenantSettings,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationCrossGeoTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationSensitivityLabelsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GoogleBigQuerySSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GraphQLTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $HealthcareSolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $InstallNonvalidatedTemplateApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $InstallServiceApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $KustoDashboardTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $LiveConnection,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $LogAnalyticsAttachForWorkspaceAdmins,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $M365DataSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Mirroring,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ODSPRefreshEnforcementTenantAllowAutomaticUpdate,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneDriveSharePointAllowSharingTenantSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneDriveSharePointViewerIntegrationTenantSettingV2,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneLakeFileExplorer,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneLakeForThirdParty,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OnPremAnalyzeInExcel,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PowerBIGoalsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PowerPlatformSolutionsIntegrationTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Printing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PromoteContent,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PublishContentPack,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PublishToWeb,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QnaFeedbackLoop,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QnaLsdlSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QueryScaleOutTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RedshiftSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RestrictMyFolderCapacity,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RetailSolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RScriptVisual,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ServicePrincipalAccess,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ShareLinkToEntireOrg,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ShareToTeamsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $SnowflakeSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $StorytellingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $SustainabilitySolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TemplatePublish,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TenantSettingPublishGetHelpInfo,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TridentPrivatePreview,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UsageMetrics,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UsageMetricsTrackUserLevelInfo,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UseDatasetsAcrossWorkspaces,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $VisualizeListInPowerBI,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $WebContentTilesTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $WebModelingTenantSwitch,

        [Parameter()]
        [System.String]
        $ApplicationId,

        [Parameter()]
        [System.Management.Automation.PSCredential]
        $ApplicationSecret,

        [Parameter()]
        [System.String]
        $TenantId,

        [Parameter()]
        [System.String]
        $CertificateThumbprint,

        [Parameter()]
        [System.String[]]
        $AccessTokens
    )

    New-M365DSCConnection -Workload 'Fabric' `
        -InboundParameters $PSBoundParameters | Out-Null

    #Ensure the proper dependencies are installed in the current environment.
    Confirm-M365DSCDependencies

    #region Telemetry
    $ResourceName = $MyInvocation.MyCommand.ModuleName.Replace('MSFT_', '')
    $CommandName = $MyInvocation.MyCommand
    $data = Format-M365DSCTelemetryParameters -ResourceName $ResourceName `
        -CommandName $CommandName `
        -Parameters $PSBoundParameters
    Add-M365DSCTelemetryEvent -Data $data
    #endregion

    $nullResult = $PSBoundParameters
    try
    {
        if ($null -ne $Script:exportedInstances -and $Script:ExportMode)
        {
            $instance = $Script:exportedInstances
        }
        else
        {
            $uri = $global:MsCloudLoginConnectionProfile.Fabric.HostUrl + "/v1/admin/tenantsettings"
            $instance = Invoke-M365DSCFabricWebRequest -Uri $uri -Method 'GET'
        }
        if ($null -eq $instance)
        {
            return $nullResult
        }

        $results = @{
            IsSingleInstance                                                      = 'Yes'
            AADSSOForGateway                                                      = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AADSSOForGateway'})
            AdminApisIncludeDetailedMetadata                                      = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AdminApisIncludeDetailedMetadata'})
            AdminApisIncludeExpressions                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AdminApisIncludeExpressions'})
            AdminCustomDisclaimer                                                 = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AdminCustomDisclaimer'})
            AISkillArtifactTenantSwitch                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AISkillArtifactTenantSwitch'})
            AllowAccessOverPrivateLinks                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowAccessOverPrivateLinks'})
            AllowCVAuthenticationTenant                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowCVAuthenticationTenant'})
            AllowCVLocalStorageV2Tenant                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowCVLocalStorageV2Tenant'})
            AllowCVToExportDataToFileTenant                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowCVToExportDataToFileTenant'})
            AllowEndorsementMasterDataSwitch                                      = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowEndorsementMasterDataSwitch'})
            AllowExternalDataSharingReceiverSwitch                                = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowExternalDataSharingReceiverSwitch'})
            AllowExternalDataSharingSwitch                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowExternalDataSharingSwitch'})
            AllowFreeTrial                                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowFreeTrial'})
            AllowGuestLookup                                                      = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowGuestLookup'})
            AllowGuestUserToAccessSharedContent                                   = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowGuestUserToAccessSharedContent'})
            AllowPowerBIASDQOnTenant                                              = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowPowerBIASDQOnTenant'})
            AllowSendAOAIDataToOtherRegions                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowSendAOAIDataToOtherRegions'})
            AllowSendNLToDaxDataToOtherRegions                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowSendNLToDaxDataToOtherRegions'})
            AllowServicePrincipalsCreateAndUseProfiles                            = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowServicePrincipalsCreateAndUseProfiles'})
            AllowServicePrincipalsUseReadAdminAPIs                                = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AllowServicePrincipalsUseReadAdminAPIs'})
            AppPush                                                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AppPush'})
            ArtifactSearchTenant                                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ArtifactSearchTenant'})
            ASCollectQueryTextTelemetryTenantSwitch                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ASCollectQueryTextTelemetryTenantSwitch'})
            ASShareableCloudConnectionBindingSecurityModeTenant                   = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ASShareableCloudConnectionBindingSecurityModeTenant'})
            ASWritethruContinuousExportTenantSwitch                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ASWritethruContinuousExportTenantSwitch'})
            ASWritethruTenantSwitch                                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ASWritethruTenantSwitch'})
            AutoInstallPowerBIAppInTeamsTenant                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AutoInstallPowerBIAppInTeamsTenant'})
            AutomatedInsightsEntryPoints                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AutomatedInsightsEntryPoints'})
            AutomatedInsightsTenant                                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AutomatedInsightsTenant'})
            AzureMap                                                              = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'AzureMap'})
            BingMap                                                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'BingMap'})
            BlockAccessFromPublicNetworks                                         = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'BlockAccessFromPublicNetworks'})
            BlockAutoDiscoverAndPackageRefresh                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'BlockAutoDiscoverAndPackageRefresh'})
            BlockProtectedLabelSharingToEntireOrg                                 = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'BlockProtectedLabelSharingToEntireOrg'})
            BlockResourceKeyAuthentication                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'BlockResourceKeyAuthentication'})
            CDSAManagement                                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'CDSAManagement'})
            CertifiedCustomVisualsTenant                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'CertifiedCustomVisualsTenant'})
            CertifyDatasets                                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'CertifyDatasets'})
            ConfigureFolderRetentionPeriod                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ConfigureFolderRetentionPeriod'})
            CreateAppWorkspaces                                                   = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'CreateAppWorkspaces'})
            CustomVisualsTenant                                                   = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'CustomVisualsTenant'})
            DatamartTenant                                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'DatamartTenant'})
            DatasetExecuteQueries                                                 = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'DatasetExecuteQueries'})
            DevelopServiceApps                                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'DevelopServiceApps'})
            DiscoverDatasetsConsumption                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'DiscoverDatasetsConsumption'})
            DiscoverDatasetsSettingsCertified                                     = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'DiscoverDatasetsSettingsCertified'})
            DiscoverDatasetsSettingsPromoted                                      = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'DiscoverDatasetsSettingsPromoted'})
            DremioSSO                                                             = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'DremioSSO'})
            EimInformationProtectionDataSourceInheritanceSetting                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EimInformationProtectionDataSourceInheritanceSetting'})
            EimInformationProtectionDownstreamInheritanceSetting                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EimInformationProtectionDownstreamInheritanceSetting'})
            EimInformationProtectionEdit                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EimInformationProtectionEdit'})
            EimInformationProtectionLessElevated                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EimInformationProtectionLessElevated'})
            EimInformationProtectionWorkspaceAdminsOverrideAutomaticLabelsSetting = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EimInformationProtectionWorkspaceAdminsOverrideAutomaticLabelsSetting'})
            ElevatedGuestsTenant                                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ElevatedGuestsTenant'})
            EmailSecurityGroupsOnOutage                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EmailSecurityGroupsOnOutage'})
            EmailSubscriptionsToB2BUsers                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EmailSubscriptionsToB2BUsers'})
            EmailSubscriptionsToExternalUsers                                     = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EmailSubscriptionsToExternalUsers'})
            EmailSubscriptionTenant                                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EmailSubscriptionTenant'})
            Embedding                                                             = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'Embedding'})
            EnableAOAI                                                            = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EnableAOAI'})
            EnableDatasetInPlaceSharing                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EnableDatasetInPlaceSharing'})
            EnableExcelYellowIntegration                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EnableExcelYellowIntegration'})
            EnableFabricAirflow                                                   = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EnableFabricAirflow'})
            EnableNLToDax                                                         = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EnableNLToDax'})
            EnableReassignDataDomainSwitch                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EnableReassignDataDomainSwitch'})
            EsriVisual                                                            = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'EsriVisual'})
            ExpFlightingTenant                                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExpFlightingTenant'})
            ExportReport                                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportReport'})
            ExportToCsv                                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportToCsv'})
            ExportToExcelSetting                                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportToExcelSetting'})
            ExportToImage                                                         = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportToImage'})
            ExportToMHTML                                                         = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportToMHTML'})
            ExportToPowerPoint                                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportToPowerPoint'})
            ExportToWord                                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportToWord'})
            ExportToXML                                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportToXML'})
            ExportVisualImageTenant                                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExportVisualImageTenant'})
            ExternalDatasetSharingTenant                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExternalDatasetSharingTenant'})
            ExternalSharingV2                                                     = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ExternalSharingV2'})
            FabricAddPartnerWorkload                                              = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'FabricAddPartnerWorkload'})
            FabricFeedbackTenantSwitch                                            = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'FabricFeedbackTenantSwitch'})
            FabricGAWorkloads                                                     = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'FabricGAWorkloads'})
            FabricThirdPartyWorkloads                                             = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'FabricThirdPartyWorkloads'})
            GitHubTenantSettings                                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'GitHubTenantSettings'})
            GitIntegrationCrossGeoTenantSwitch                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'GitIntegrationCrossGeoTenantSwitch'})
            GitIntegrationSensitivityLabelsTenantSwitch                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'GitIntegrationSensitivityLabelsTenantSwitch'})
            GitIntegrationTenantSwitch                                            = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'GitIntegrationTenantSwitch'})
            GoogleBigQuerySSO                                                     = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'GoogleBigQuerySSO'})
            GraphQLTenant                                                         = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'GraphQLTenant'})
            HealthcareSolutionsTenantSwitch                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'HealthcareSolutionsTenantSwitch'})
            InstallNonvalidatedTemplateApps                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'InstallNonvalidatedTemplateApps'})
            InstallServiceApps                                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'InstallServiceApps'})
            KustoDashboardTenantSwitch                                            = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'KustoDashboardTenantSwitch'})
            LiveConnection                                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'LiveConnection'})
            LogAnalyticsAttachForWorkspaceAdmins                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'LogAnalyticsAttachForWorkspaceAdmins'})
            M365DataSharing                                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'M365DataSharing'})
            Mirroring                                                             = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'Mirroring'})
            ODSPRefreshEnforcementTenantAllowAutomaticUpdate                      = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ODSPRefreshEnforcementTenantAllowAutomaticUpdate'})
            OneDriveSharePointAllowSharingTenantSetting                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'OneDriveSharePointAllowSharingTenantSetting'})
            OneDriveSharePointViewerIntegrationTenantSettingV2                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'OneDriveSharePointViewerIntegrationTenantSettingV2'})
            OneLakeFileExplorer                                                   = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'OneLakeFileExplorer'})
            OneLakeForThirdParty                                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'OneLakeForThirdParty'})
            OnPremAnalyzeInExcel                                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'OnPremAnalyzeInExcel'})
            PowerBIGoalsTenant                                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'PowerBIGoalsTenant'})
            PowerPlatformSolutionsIntegrationTenant                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'PowerPlatformSolutionsIntegrationTenant'})
            Printing                                                              = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'Printing'})
            PromoteContent                                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'PromoteContent'})
            PublishContentPack                                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'PublishContentPack'})
            PublishToWeb                                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'PublishToWeb'})
            QnaFeedbackLoop                                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'QnaFeedbackLoop'})
            QnaLsdlSharing                                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'QnaLsdlSharing'})
            QueryScaleOutTenant                                                   = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'QueryScaleOutTenant'})
            RedshiftSSO                                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'RedshiftSSO'})
            RestrictMyFolderCapacity                                              = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'RestrictMyFolderCapacity'})
            RetailSolutionsTenantSwitch                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'RetailSolutionsTenantSwitch'})
            RScriptVisual                                                         = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'RScriptVisual'})
            ServicePrincipalAccess                                                = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ServicePrincipalAccess'})
            ShareLinkToEntireOrg                                                  = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ShareLinkToEntireOrg'})
            ShareToTeamsTenant                                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'ShareToTeamsTenant'})
            SnowflakeSSO                                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'SnowflakeSSO'})
            StorytellingTenant                                                    = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'StorytellingTenant'})
            SustainabilitySolutionsTenantSwitch                                   = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'SustainabilitySolutionsTenantSwitch'})
            TemplatePublish                                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'TemplatePublish'})
            TenantSettingPublishGetHelpInfo                                       = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'TenantSettingPublishGetHelpInfo'})
            TridentPrivatePreview                                                 = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'TridentPrivatePreview'})
            UsageMetrics                                                          = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'UsageMetrics'})
            UsageMetricsTrackUserLevelInfo                                        = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'UsageMetricsTrackUserLevelInfo'})
            UseDatasetsAcrossWorkspaces                                           = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'UseDatasetsAcrossWorkspaces'})
            VisualizeListInPowerBI                                                = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'VisualizeListInPowerBI'})
            WebContentTilesTenant                                                 = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'WebContentTilesTenant'})
            WebModelingTenantSwitch                                               = Get-M365DSCFabricTenantSettingObject -Setting ($instance.tenantSettings | Where-Object -FilterScript {$_.settingName -eq 'WebModelingTenantSwitch'})
            ApplicationId                                                         = $ApplicationId
            TenantId                                                              = $TenantId
            CertificateThumbprint                                                 = $CertificateThumbprint
            ApplicationSecret                                                     = $ApplicationSecret
            AccessTokens                                                          = $AccessTokens
        }
        return [System.Collections.Hashtable] $results
    }
    catch
    {
        New-M365DSCLogEntry -Message 'Error retrieving data:' `
            -Exception $_ `
            -Source $($MyInvocation.MyCommand.Source) `
            -TenantId $TenantId `
            -Credential $Credential

        return $nullResult
    }
}

function Set-TargetResource
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true)]
        [ValidateSet('Yes')]
        [System.String]
        $IsSingleInstance,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AADSSOForGateway,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminApisIncludeDetailedMetadata,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminApisIncludeExpressions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminCustomDisclaimer,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AISkillArtifactTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowAccessOverPrivateLinks,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVAuthenticationTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVLocalStorageV2Tenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVToExportDataToFileTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowEndorsementMasterDataSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowExternalDataSharingReceiverSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowExternalDataSharingSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowFreeTrial,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowGuestLookup,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowGuestUserToAccessSharedContent,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowPowerBIASDQOnTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowSendAOAIDataToOtherRegions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowSendNLToDaxDataToOtherRegions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowServicePrincipalsCreateAndUseProfiles,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowServicePrincipalsUseReadAdminAPIs,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AppPush,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ArtifactSearchTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASCollectQueryTextTelemetryTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASShareableCloudConnectionBindingSecurityModeTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASWritethruContinuousExportTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASWritethruTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutoInstallPowerBIAppInTeamsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutomatedInsightsEntryPoints,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutomatedInsightsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AzureMap,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BingMap,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockAccessFromPublicNetworks,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockAutoDiscoverAndPackageRefresh,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockProtectedLabelSharingToEntireOrg,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockResourceKeyAuthentication,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CDSAManagement,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CertifiedCustomVisualsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CertifyDatasets,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ConfigureFolderRetentionPeriod,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CreateAppWorkspaces,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CustomVisualsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DatamartTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DatasetExecuteQueries,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DevelopServiceApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsConsumption,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsSettingsCertified,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsSettingsPromoted,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DremioSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionDataSourceInheritanceSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionDownstreamInheritanceSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionEdit,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionLessElevated,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionWorkspaceAdminsOverrideAutomaticLabelsSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ElevatedGuestsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSecurityGroupsOnOutage,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionsToB2BUsers,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionsToExternalUsers,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Embedding,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableAOAI,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableDatasetInPlaceSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableExcelYellowIntegration,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableFabricAirflow,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableNLToDax,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableReassignDataDomainSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EsriVisual,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExpFlightingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportReport,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToCsv,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToExcelSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToImage,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToMHTML,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToPowerPoint,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToWord,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToXML,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportVisualImageTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExternalDatasetSharingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExternalSharingV2,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricAddPartnerWorkload,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricFeedbackTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricGAWorkloads,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricThirdPartyWorkloads,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitHubTenantSettings,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationCrossGeoTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationSensitivityLabelsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GoogleBigQuerySSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GraphQLTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $HealthcareSolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $InstallNonvalidatedTemplateApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $InstallServiceApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $KustoDashboardTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $LiveConnection,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $LogAnalyticsAttachForWorkspaceAdmins,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $M365DataSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Mirroring,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ODSPRefreshEnforcementTenantAllowAutomaticUpdate,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneDriveSharePointAllowSharingTenantSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneDriveSharePointViewerIntegrationTenantSettingV2,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneLakeFileExplorer,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneLakeForThirdParty,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OnPremAnalyzeInExcel,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PowerBIGoalsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PowerPlatformSolutionsIntegrationTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Printing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PromoteContent,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PublishContentPack,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PublishToWeb,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QnaFeedbackLoop,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QnaLsdlSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QueryScaleOutTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RedshiftSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RestrictMyFolderCapacity,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RetailSolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RScriptVisual,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ServicePrincipalAccess,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ShareLinkToEntireOrg,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ShareToTeamsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $SnowflakeSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $StorytellingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $SustainabilitySolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TemplatePublish,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TenantSettingPublishGetHelpInfo,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TridentPrivatePreview,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UsageMetrics,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UsageMetricsTrackUserLevelInfo,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UseDatasetsAcrossWorkspaces,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $VisualizeListInPowerBI,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $WebContentTilesTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $WebModelingTenantSwitch,

        [Parameter()]
        [System.String]
        $ApplicationId,

        [Parameter()]
        [System.Management.Automation.PSCredential]
        $ApplicationSecret,

        [Parameter()]
        [System.String]
        $TenantId,

        [Parameter()]
        [System.String]
        $CertificateThumbprint,

        [Parameter()]
        [System.String[]]
        $AccessTokens
    )

    Write-Warning -Message "This resource is read-only and does not support changing the settings. It is used for monitoring purposes only."
}

function Test-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        [Parameter(Mandatory = $true)]
        [ValidateSet('Yes')]
        [System.String]
        $IsSingleInstance,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AADSSOForGateway,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminApisIncludeDetailedMetadata,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminApisIncludeExpressions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AdminCustomDisclaimer,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AISkillArtifactTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowAccessOverPrivateLinks,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVAuthenticationTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVLocalStorageV2Tenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowCVToExportDataToFileTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowEndorsementMasterDataSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowExternalDataSharingReceiverSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowExternalDataSharingSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowFreeTrial,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowGuestLookup,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowGuestUserToAccessSharedContent,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowPowerBIASDQOnTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowSendAOAIDataToOtherRegions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowSendNLToDaxDataToOtherRegions,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowServicePrincipalsCreateAndUseProfiles,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AllowServicePrincipalsUseReadAdminAPIs,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AppPush,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ArtifactSearchTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASCollectQueryTextTelemetryTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASShareableCloudConnectionBindingSecurityModeTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASWritethruContinuousExportTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ASWritethruTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutoInstallPowerBIAppInTeamsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutomatedInsightsEntryPoints,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AutomatedInsightsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $AzureMap,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BingMap,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockAccessFromPublicNetworks,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockAutoDiscoverAndPackageRefresh,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockProtectedLabelSharingToEntireOrg,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $BlockResourceKeyAuthentication,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CDSAManagement,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CertifiedCustomVisualsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CertifyDatasets,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ConfigureFolderRetentionPeriod,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CreateAppWorkspaces,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $CustomVisualsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DatamartTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DatasetExecuteQueries,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DevelopServiceApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsConsumption,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsSettingsCertified,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DiscoverDatasetsSettingsPromoted,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $DremioSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionDataSourceInheritanceSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionDownstreamInheritanceSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionEdit,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionLessElevated,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EimInformationProtectionWorkspaceAdminsOverrideAutomaticLabelsSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ElevatedGuestsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSecurityGroupsOnOutage,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionsToB2BUsers,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionsToExternalUsers,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EmailSubscriptionTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Embedding,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableAOAI,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableDatasetInPlaceSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableExcelYellowIntegration,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableFabricAirflow,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableNLToDax,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EnableReassignDataDomainSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $EsriVisual,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExpFlightingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportReport,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToCsv,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToExcelSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToImage,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToMHTML,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToPowerPoint,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToWord,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportToXML,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExportVisualImageTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExternalDatasetSharingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ExternalSharingV2,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricAddPartnerWorkload,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricFeedbackTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricGAWorkloads,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $FabricThirdPartyWorkloads,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitHubTenantSettings,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationCrossGeoTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationSensitivityLabelsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GitIntegrationTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GoogleBigQuerySSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $GraphQLTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $HealthcareSolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $InstallNonvalidatedTemplateApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $InstallServiceApps,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $KustoDashboardTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $LiveConnection,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $LogAnalyticsAttachForWorkspaceAdmins,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $M365DataSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Mirroring,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ODSPRefreshEnforcementTenantAllowAutomaticUpdate,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneDriveSharePointAllowSharingTenantSetting,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneDriveSharePointViewerIntegrationTenantSettingV2,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneLakeFileExplorer,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OneLakeForThirdParty,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $OnPremAnalyzeInExcel,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PowerBIGoalsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PowerPlatformSolutionsIntegrationTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $Printing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PromoteContent,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PublishContentPack,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $PublishToWeb,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QnaFeedbackLoop,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QnaLsdlSharing,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $QueryScaleOutTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RedshiftSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RestrictMyFolderCapacity,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RetailSolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $RScriptVisual,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ServicePrincipalAccess,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ShareLinkToEntireOrg,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $ShareToTeamsTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $SnowflakeSSO,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $StorytellingTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $SustainabilitySolutionsTenantSwitch,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TemplatePublish,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TenantSettingPublishGetHelpInfo,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $TridentPrivatePreview,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UsageMetrics,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UsageMetricsTrackUserLevelInfo,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $UseDatasetsAcrossWorkspaces,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $VisualizeListInPowerBI,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $WebContentTilesTenant,

        [Parameter()]
        [Microsoft.Management.Infrastructure.CimInstance]
        $WebModelingTenantSwitch,

        [Parameter()]
        [System.String]
        $ApplicationId,

        [Parameter()]
        [System.Management.Automation.PSCredential]
        $ApplicationSecret,

        [Parameter()]
        [System.String]
        $TenantId,

        [Parameter()]
        [System.String]
        $CertificateThumbprint,

        [Parameter()]
        [System.String[]]
        $AccessTokens
    )

    #Ensure the proper dependencies are installed in the current environment.
    Confirm-M365DSCDependencies

    #region Telemetry
    $ResourceName = $MyInvocation.MyCommand.ModuleName.Replace('MSFT_', '')
    $CommandName = $MyInvocation.MyCommand
    $data = Format-M365DSCTelemetryParameters -ResourceName $ResourceName `
        -CommandName $CommandName `
        -Parameters $PSBoundParameters
    Add-M365DSCTelemetryEvent -Data $data
    #endregion

    $CurrentValues = Get-TargetResource @PSBoundParameters
    $ValuesToCheck = ([Hashtable]$PSBoundParameters).Clone()
    Write-Verbose -Message "Current Values: $(Convert-M365DscHashtableToString -Hashtable $CurrentValues)"
    Write-Verbose -Message "Target Values: $(Convert-M365DscHashtableToString -Hashtable $ValuesToCheck)"

    #Compare Cim instances
    foreach ($key in $PSBoundParameters.Keys)
    {
        $source = $PSBoundParameters.$key
        $target = $CurrentValues.$key
        if ($source.getType().Name -like '*CimInstance*')
        {
            $source = Get-M365DSCDRGComplexTypeToHashtable -ComplexObject $source

            $testResult = Compare-M365DSCComplexObject `
                -Source ($source) `
                -Target ($target)

            if (-Not $testResult)
            {
                Write-Verbose -Message "Difference found for $key"
                Write-Verbose -Message "Current Values: $($source | Out-String)"
                Write-Verbose -Message "Desired Values: $($target | Out-String)"
                $testResult = $false
                break
            }

            $ValuesToCheck.Remove($key) | Out-Null
        }
    }

    if ($testResult)
    {
        $testResult = Test-M365DSCParameterState -CurrentValues $CurrentValues `
            -Source $($MyInvocation.MyCommand.Source) `
            -DesiredValues $PSBoundParameters `
            -ValuesToCheck $ValuesToCheck.Keys
    }

    Write-Verbose -Message "Test-TargetResource returned $testResult"

    return $testResult
}

function Export-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.String])]
    param
    (
        [Parameter()]
        [System.String]
        $ApplicationId,

        [Parameter()]
        [System.String]
        $TenantId,

        [Parameter()]
        [System.Management.Automation.PSCredential]
        $ApplicationSecret,

        [Parameter()]
        [System.String]
        $CertificateThumbprint,

        [Parameter()]
        [System.String[]]
        $AccessTokens
    )

    $ConnectionMode = New-M365DSCConnection -Workload 'Fabric' `
        -InboundParameters $PSBoundParameters

    #Ensure the proper dependencies are installed in the current environment.
    Confirm-M365DSCDependencies

    #region Telemetry
    $ResourceName = $MyInvocation.MyCommand.ModuleName.Replace('MSFT_', '')
    $CommandName = $MyInvocation.MyCommand
    $data = Format-M365DSCTelemetryParameters -ResourceName $ResourceName `
        -CommandName $CommandName `
        -Parameters $PSBoundParameters
    Add-M365DSCTelemetryEvent -Data $data
    #endregion

    try
    {
        $Script:ExportMode = $true
        $uri = $global:MsCloudLoginConnectionProfile.Fabric.HostUrl + "/v1/admin/tenantsettings"
        [array] $Script:exportedInstances = Invoke-M365DSCFabricWebRequest -Uri $uri -Method 'GET'

        if ($null -ne $Global:M365DSCExportResourceInstancesCount)
        {
            $Global:M365DSCExportResourceInstancesCount++
        }
        $dscContent = ''
        $params = @{
            IsSingleInstance      = 'Yes'
            ApplicationId         = $ApplicationId
            TenantId              = $TenantId
            CertificateThumbprint = $CertificateThumbprint
            AccessTokens          = $AccessTokens
        }

        $Results = Get-TargetResource @Params
        $Results = Update-M365DSCExportAuthenticationResults -ConnectionMode $ConnectionMode `
            -Results $Results

        $newResults = ([Hashtable]$Results).Clone()
        foreach ($key in $Results.Keys)
        {
            if ($null -ne $Results.$key -and $key -notin $params.Keys)
            {
                $newResults.$key = Get-M365DSCFabricTenantSettingAsString -Setting $Results.$key
            }
        }

        $currentDSCBlock = Get-M365DSCExportContentForResource -ResourceName $ResourceName `
            -ConnectionMode $ConnectionMode `
            -ModulePath $PSScriptRoot `
            -Results $newResults `
            -Credential $Credential
        $fixQuotes = $false
        foreach ($key in $Results.Keys)
        {
            if ($null -ne $Results.$key -and $key -notin $params.Keys)
            {
                if ($currentDSCBlock.Contains('`"'))
                {
                    $fixQuotes = $true
                }
                $currentDSCBlock = Convert-DSCStringParamToVariable -DSCBlock $currentDSCBlock `
                    -ParameterName $key                
            }
        }
        if ($fixQuotes)
        {
            $currentDSCBlock = $currentDSCBlock.Replace('`', '"')
        }
        $dscContent += $currentDSCBlock
        Save-M365DSCPartialExport -Content $currentDSCBlock `
            -FileName $Global:PartialExportFileName
            Write-Host $Global:M365DSCEmojiGreenCheckMark
        return $dscContent
    }
    catch
    {
        Write-Host $Global:M365DSCEmojiRedX

        New-M365DSCLogEntry -Message 'Error during Export:' `
            -Exception $_ `
            -Source $($MyInvocation.MyCommand.Source) `
            -TenantId $TenantId `
            -Credential $Credential

        return ''
    }
}

function Get-M365DSCFabricTenantSettingAsString
{
    [CmdletBinding()]
    [OutputType([System.String])]
    param(
        [Parameter(Mandatory = $true)]
        [System.Collections.Hashtable]
        $Setting
    )

    $StringContent += "MSFT_FabricTenantSetting {`r`n"
    $StringContent += " settingName = '" + $setting.settingName + "'`r`n"
    if (-not [System.String]::IsNullOrEmpty($setting.canSpecifySecurityGroups))
    {
        $StringContent += " canSpecifySecurityGroups = `$" + $setting.canSpecifySecurityGroups + "`r`n"
    }
    if (-not [System.String]::IsNullOrEmpty($setting.delegateToWorkspace))
    {
        $StringContent += " delegateToWorkspace = `$" + $setting.delegateToWorkspace + "`r`n"
    }
    if (-not [System.String]::IsNullOrEmpty($setting.delegatedFrom))
    {
        $StringContent += " delegatedFrom = '" + $setting.delegatedFrom + "'`r`n"
    }
    $StringContent += " enabled = `$" + $setting.enabled + "`r`n"
    if (-not [System.String]::IsNullOrEmpty($setting.tenantSettingGroup))
    {
        $StringContent += " tenantSettingGroup = '" + $setting.tenantSettingGroup + "'`r`n"
    }
    $StringContent += " title = '" + $setting.title.Replace("'", "''") + "'`r`n"
    if (-not [System.String]::IsNullOrEmpty($setting.properties))
    {
        $StringContent += " properties = @("
        foreach ($property in $setting.properties)
        {
            $StringContent += " MSFT_FabricTenantSettingProperty{`r`n"
            $StringContent += " name = '$($property.name)'`r`n"
            $StringContent += " value = '$($property.value.Replace("'", "''"))'`r`n"
            $StringContent += " type = '$($property.type)'`r`n"
            $StringContent += " }`r`n"
        }
        $StringContent += ")"
    }
    if (-not [System.String]::IsNullOrEmpty($setting.excludedSecurityGroups))
    {
        $excludedSecurityGroupsValue = $setting.excludedSecurityGroups -join "','"
        $StringContent += " excludedSecurityGroups = @('" + $excludedSecurityGroupsValue + "')`r`n"
    }
    if (-not [System.String]::IsNullOrEmpty($setting.enabledSecurityGroups))
    {
        $enabledSecurityGroupsValue = $setting.enabledSecurityGroups -join "','"
        $StringContent += " enabledSecurityGroups = @('" + $enabledSecurityGroupsValue + "')`r`n"
    }
    $StringContent += " }`r`n"
    return $StringContent
}

function Get-M365DSCFabricTenantSettingObject
{
    [CmdletBinding()]
    [OutputType([PSCustomObject])]
    param(
        [Parameter()]
        $Setting
    )

    if ($null -eq $Setting)
    {
        return $null
    }

    Write-Verbose -Message "Retrieving values for setting {$($Setting.settingName)}"

    $values = @{
        settingName              = $Setting.settingName
        enabled                  = [Boolean]$Setting.enabled
        title                    = $Setting.title
    }
    if (-not [System.String]::IsNullOrEmpty($Setting.canSpecifySecurityGroups))
    {
        $values.Add('canSpecifySecurityGroups', [Boolean]$Setting.canSpecifySecurityGroups)
    }
    if (-not [System.String]::IsNullOrEmpty($Setting.delegateToWorkspace))
    {
        $values.Add('delegateToWorkspace', $Setting.delegateToWorkspace)
    }
    if (-not [System.String]::IsNullOrEmpty($Setting.delegatedFrom))
    {
        $values.Add('delegatedFrom', $Setting.delegatedFrom)
    }
    if (-not [System.String]::IsNullOrEmpty($Setting.tenantSettingGroup))
    {
        $values.Add('tenantSettingGroup', $Setting.tenantSettingGroup)
    }
    if ($null -ne $Setting.properties -and $Setting.properties.Length -gt 0)
    {
        $propertiesValue = @()
        foreach ($property in $Setting.Properties)
        {
            $curProperty = @{
                name  = $property.name
                value = $property.value
                type  = $property.type
            }
            $propertiesValue += $curProperty
        }

        $values.Add('properties', $propertiesValue)
    }
    if ($null -ne $Setting.excludedSecurityGroups -and $Setting.excludedSecurityGroups.Length -gt 0)
    {
        $values.Add('excludedSecurityGroups', [Array]$Setting.excludedSecurityGroups.name)
    }
    if ($null -ne $Setting.enabledSecurityGroups -and $Setting.enabledSecurityGroups.Length -gt 0)
    {
        $values.Add('enabledSecurityGroups', [Array]$Setting.enabledSecurityGroups.name)
    }
    return $values
}

Export-ModuleMember -Function *-TargetResource