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 = (Get-MSCloudLoginConnectionProfile -Workload 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 = (Get-MSCloudLoginConnectionProfile -Workload 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