DscResources/SharePoint/SharePoint.schema.psm1

# (2025-04-03 01:41:55) Generated using Microsoft365DSC v1.25.326.1
Configuration 'SharePoint'
{
    param
    (
        [Parameter(Mandatory = $true)]
        [System.String]
        $ApplicationId,

        [Parameter(Mandatory = $true)]
        [System.String]
        $TenantId,

        [Parameter(Mandatory = $true)]
        [System.String]
        $CertificateThumbprint
    )

    Import-DscResource -ModuleName Microsoft365DSC

    if ($ConfigurationData.NonNodeData.SharePoint.ContainsKey('AccessControlSettings'))
    {
        $resourceTitle = 'AccessControlSettingsDefaults'

        $parameters = $ConfigurationData.NonNodeData.SharePoint.AccessControlSettings
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOAccessControlSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($App in $ConfigurationData.NonNodeData.SharePoint.App)
    {
        $resourceTitle = 'SPOApp-{0}-{1}' -f $App.Identity,$App.Path
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $App
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOApp' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.SharePoint.ContainsKey('BrowserIdleSignout'))
    {
        $resourceTitle = 'BrowserIdleSignoutDefaults'

        $parameters = $ConfigurationData.NonNodeData.SharePoint.BrowserIdleSignout
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOBrowserIdleSignout' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.SharePoint.ContainsKey('HomeSite'))
    {
        $resourceTitle = 'HomeSiteDefaults'

        $parameters = $ConfigurationData.NonNodeData.SharePoint.HomeSite
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOHomeSite' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($HubSite in $ConfigurationData.NonNodeData.SharePoint.HubSite)
    {
        $resourceTitle = 'SPOHubSite-{0}' -f $HubSite.Url
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $HubSite
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOHubSite' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($OrgAssetsLibrary in $ConfigurationData.NonNodeData.SharePoint.OrgAssetsLibrary)
    {
        $resourceTitle = 'SPOOrgAssetsLibrary-{0}' -f $OrgAssetsLibrary.LibraryUrl
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $OrgAssetsLibrary
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOOrgAssetsLibrary' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($PropertyBag in $ConfigurationData.NonNodeData.SharePoint.PropertyBag)
    {
        $resourceTitle = 'SPOPropertyBag-{0}-{1}-{2}' -f $PropertyBag.Url,$PropertyBag.Key,$PropertyBag.Value
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $PropertyBag
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOPropertyBag' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.SharePoint.ContainsKey('RetentionLabelsSettings'))
    {
        $resourceTitle = 'RetentionLabelsSettingsDefaults'

        $parameters = $ConfigurationData.NonNodeData.SharePoint.RetentionLabelsSettings
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPORetentionLabelsSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SearchManagedProperty in $ConfigurationData.NonNodeData.SharePoint.SearchManagedProperty)
    {
        $resourceTitle = 'SPOSearchManagedProperty-{0}-{1}' -f $SearchManagedProperty.Name,$SearchManagedProperty.Type
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SearchManagedProperty
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSearchManagedProperty' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SearchResultSource in $ConfigurationData.NonNodeData.SharePoint.SearchResultSource)
    {
        $resourceTitle = 'SPOSearchResultSource-{0}' -f $SearchResultSource.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SearchResultSource
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSearchResultSource' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.SharePoint.ContainsKey('SharingSettings'))
    {
        $resourceTitle = 'SharingSettingsDefaults'

        $parameters = $ConfigurationData.NonNodeData.SharePoint.SharingSettings
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSharingSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($Site in $ConfigurationData.NonNodeData.SharePoint.Site)
    {
        $resourceTitle = 'SPOSite-{0}' -f $Site.Url
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $Site
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSite' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SiteAuditSettings in $ConfigurationData.NonNodeData.SharePoint.SiteAuditSettings)
    {
        $resourceTitle = 'SPOSiteAuditSettings-{0}' -f $SiteAuditSettings.Url
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SiteAuditSettings
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSiteAuditSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SiteDesign in $ConfigurationData.NonNodeData.SharePoint.SiteDesign)
    {
        $resourceTitle = 'SPOSiteDesign-{0}' -f $SiteDesign.Title
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SiteDesign
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSiteDesign' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SiteDesignRights in $ConfigurationData.NonNodeData.SharePoint.SiteDesignRights)
    {
        $resourceTitle = 'SPOSiteDesignRights-{0}-{1}' -f $SiteDesignRights.SiteDesignTitle,$SiteDesignRights.Rights
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SiteDesignRights
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSiteDesignRights' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SiteGroup in $ConfigurationData.NonNodeData.SharePoint.SiteGroup)
    {
        $resourceTitle = 'SPOSiteGroup-{0}-{1}' -f $SiteGroup.Identity,$SiteGroup.Url
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SiteGroup
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSiteGroup' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SiteScript in $ConfigurationData.NonNodeData.SharePoint.SiteScript)
    {
        $resourceTitle = 'SPOSiteScript-{0}' -f $SiteScript.Title
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SiteScript
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOSiteScript' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($StorageEntity in $ConfigurationData.NonNodeData.SharePoint.StorageEntity)
    {
        $resourceTitle = 'SPOStorageEntity-{0}' -f $StorageEntity.Key
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $StorageEntity
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOStorageEntity' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($TenantCdnEnabled in $ConfigurationData.NonNodeData.SharePoint.TenantCdnEnabled)
    {
        $resourceTitle = 'SPOTenantCdnEnabled-{0}' -f $TenantCdnEnabled.CdnType
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $TenantCdnEnabled
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOTenantCdnEnabled' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($TenantCdnPolicy in $ConfigurationData.NonNodeData.SharePoint.TenantCdnPolicy)
    {
        $resourceTitle = 'SPOTenantCdnPolicy-{0}' -f $TenantCdnPolicy.CDNType
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $TenantCdnPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOTenantCdnPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.SharePoint.ContainsKey('TenantSettings'))
    {
        $resourceTitle = 'TenantSettingsDefaults'

        $parameters = $ConfigurationData.NonNodeData.SharePoint.TenantSettings
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'SPOTenantSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($Theme in $ConfigurationData.NonNodeData.SharePoint.Theme)
    {
        $resourceTitle = 'SPOTheme-{0}' -f $Theme.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $Theme
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        if ($parameters.ContainsKey('Palette'))
        {
            $parameters.Palette = $parameters.Palette | ForEach-Object {
                if ($_.ContainsKey('UniqueId'))
                {
                    $_.Remove('UniqueId')
                }

                (Get-DscSplattedResource -ResourceName 'MSFT_SPOThemePaletteProperty' -Properties $_ -NoInvoke).Invoke($_)
            }
        }

        (Get-DscSplattedResource -ResourceName 'SPOTheme' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($UserProfileProperty in $ConfigurationData.NonNodeData.SharePoint.UserProfileProperty)
    {
        $resourceTitle = 'SPOUserProfileProperty-{0}' -f $UserProfileProperty.UserName
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $UserProfileProperty
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        if ($parameters.ContainsKey('Properties'))
        {
            $parameters.Properties = $parameters.Properties | ForEach-Object {
                if ($_.ContainsKey('UniqueId'))
                {
                    $_.Remove('UniqueId')
                }

                (Get-DscSplattedResource -ResourceName 'MSFT_SPOUserProfilePropertyInstance' -Properties $_ -NoInvoke).Invoke($_)
            }
        }

        (Get-DscSplattedResource -ResourceName 'SPOUserProfileProperty' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }
}