DscResources/Azure/Azure.schema.psm1

# (2026-04-25 02:44:13) Generated using Microsoft365DSC v1.26.422.1
Configuration 'Azure'
{
    param
    (
        [Parameter(Mandatory = $true)]
        [System.String]
        $ApplicationId,

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

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

    Import-DscResource -ModuleName Microsoft365DSC

    foreach ($BillingAccountPolicy in $ConfigurationData.NonNodeData.Azure.BillingAccountPolicy)
    {
        $resourceTitle = 'AzureBillingAccountPolicy-{0}' -f $BillingAccountPolicy.BillingAccount
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $BillingAccountPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

                if ($_.Count -gt 0)
                {
                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureBillingAccountPolicyEnterpriseAgreementPolicy' -Properties $_ -NoInvoke).Invoke($_)
                }
            }

            if ($parameters.EnterpriseAgreementPolicies.Count -eq 0)
            {
                $parameters.Remove('EnterpriseAgreementPolicies')
            }
        }

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

    foreach ($BillingAccountsAssociatedTenant in $ConfigurationData.NonNodeData.Azure.BillingAccountsAssociatedTenant)
    {
        $resourceTitle = 'AzureBillingAccountsAssociatedTenant-{0}' -f $BillingAccountsAssociatedTenant.AssociatedTenantId
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $BillingAccountsAssociatedTenant
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

    foreach ($BillingAccountScheduledAction in $ConfigurationData.NonNodeData.Azure.BillingAccountScheduledAction)
    {
        $resourceTitle = 'AzureBillingAccountScheduledAction-{0}' -f $BillingAccountScheduledAction.DisplayName
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $BillingAccountScheduledAction
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

                if ($_.Count -gt 0)
                {
                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureBillingAccountScheduledActionNotification' -Properties $_ -NoInvoke).Invoke($_)
                }
            }

            if ($parameters.Notification.Count -eq 0)
            {
                $parameters.Remove('Notification')
            }
        }

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

                if ($_.Count -gt 0)
                {
                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureBillingAccountScheduledActionSchedule' -Properties $_ -NoInvoke).Invoke($_)
                }
            }

            if ($parameters.Schedule.Count -eq 0)
            {
                $parameters.Remove('Schedule')
            }
        }

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

    foreach ($BillingAccountsRoleAssignment in $ConfigurationData.NonNodeData.Azure.BillingAccountsRoleAssignment)
    {
        $resourceTitle = 'AzureBillingAccountsRoleAssignment-{0}-{1}' -f $BillingAccountsRoleAssignment.PrincipalName,$BillingAccountsRoleAssignment.RoleDefinition
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $BillingAccountsRoleAssignment
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

    foreach ($DiagnosticSettings in $ConfigurationData.NonNodeData.Azure.DiagnosticSettings)
    {
        $resourceTitle = 'AzureDiagnosticSettings-{0}' -f $DiagnosticSettings.Name
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $DiagnosticSettings
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

                if ($_.Count -gt 0)
                {
                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureDiagnosticSettingsCategory' -Properties $_ -NoInvoke).Invoke($_)
                }
            }

            if ($parameters.Categories.Count -eq 0)
            {
                $parameters.Remove('Categories')
            }
        }

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

    foreach ($DiagnosticSettingsCustomSecurityAttribute in $ConfigurationData.NonNodeData.Azure.DiagnosticSettingsCustomSecurityAttribute)
    {
        $resourceTitle = 'AzureDiagnosticSettingsCustomSecurityAttribute-{0}' -f $DiagnosticSettingsCustomSecurityAttribute.Name
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $DiagnosticSettingsCustomSecurityAttribute
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

                if ($_.Count -gt 0)
                {
                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureDiagnosticSettingsCustomSecurityAttributeCategory' -Properties $_ -NoInvoke).Invoke($_)
                }
            }

            if ($parameters.Categories.Count -eq 0)
            {
                $parameters.Remove('Categories')
            }
        }

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

    foreach ($RoleAssignmentScheduleRequest in $ConfigurationData.NonNodeData.Azure.RoleAssignmentScheduleRequest)
    {
        $resourceTitle = 'AzureRoleAssignmentScheduleRequest-{0}-{1}-{2}' -f $RoleAssignmentScheduleRequest.Principal,$RoleAssignmentScheduleRequest.RoleDefinition,$RoleAssignmentScheduleRequest.DirectoryScopeId
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $RoleAssignmentScheduleRequest
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

                        if ($_.Count -gt 0)
                        {
                            (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleAssignmentScheduleRequestScheduleExpiration' -Properties $_ -NoInvoke).Invoke($_)
                        }
                    }

                    if ($_.expiration.Count -eq 0)
                    {
                        $_.Remove('expiration')
                    }
                }

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

                                if ($_.Count -gt 0)
                                {
                                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleAssignmentScheduleRequestScheduleRecurrencePattern' -Properties $_ -NoInvoke).Invoke($_)
                                }
                            }

                            if ($_.pattern.Count -eq 0)
                            {
                                $_.Remove('pattern')
                            }
                        }

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

                                if ($_.Count -gt 0)
                                {
                                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleAssignmentScheduleRequestScheduleRecurrenceRange' -Properties $_ -NoInvoke).Invoke($_)
                                }
                            }

                            if ($_.range.Count -eq 0)
                            {
                                $_.Remove('range')
                            }
                        }

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

                        if ($_.Count -gt 0)
                        {
                            (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleAssignmentScheduleRequestScheduleRecurrence' -Properties $_ -NoInvoke).Invoke($_)
                        }
                    }

                    if ($_.recurrence.Count -eq 0)
                    {
                        $_.Remove('recurrence')
                    }
                }

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

                if ($_.Count -gt 0)
                {
                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleAssignmentScheduleRequestSchedule' -Properties $_ -NoInvoke).Invoke($_)
                }
            }

            if ($parameters.ScheduleInfo.Count -eq 0)
            {
                $parameters.Remove('ScheduleInfo')
            }
        }

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

    foreach ($RoleEligibilityScheduleRequest in $ConfigurationData.NonNodeData.Azure.RoleEligibilityScheduleRequest)
    {
        $resourceTitle = 'AzureRoleEligibilityScheduleRequest-{0}-{1}-{2}' -f $RoleEligibilityScheduleRequest.Principal,$RoleEligibilityScheduleRequest.RoleDefinition,$RoleEligibilityScheduleRequest.DirectoryScopeId
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $RoleEligibilityScheduleRequest
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

                        if ($_.Count -gt 0)
                        {
                            (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleEligibilityScheduleRequestScheduleExpiration' -Properties $_ -NoInvoke).Invoke($_)
                        }
                    }

                    if ($_.expiration.Count -eq 0)
                    {
                        $_.Remove('expiration')
                    }
                }

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

                                if ($_.Count -gt 0)
                                {
                                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleEligibilityScheduleRequestScheduleRecurrencePattern' -Properties $_ -NoInvoke).Invoke($_)
                                }
                            }

                            if ($_.pattern.Count -eq 0)
                            {
                                $_.Remove('pattern')
                            }
                        }

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

                                if ($_.Count -gt 0)
                                {
                                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleEligibilityScheduleRequestScheduleRecurrenceRange' -Properties $_ -NoInvoke).Invoke($_)
                                }
                            }

                            if ($_.range.Count -eq 0)
                            {
                                $_.Remove('range')
                            }
                        }

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

                        if ($_.Count -gt 0)
                        {
                            (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleEligibilityScheduleRequestScheduleRecurrence' -Properties $_ -NoInvoke).Invoke($_)
                        }
                    }

                    if ($_.recurrence.Count -eq 0)
                    {
                        $_.Remove('recurrence')
                    }
                }

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

                if ($_.Count -gt 0)
                {
                    (Get-DscSplattedResource -ResourceName 'MSFT_AzureRoleEligibilityScheduleRequestSchedule' -Properties $_ -NoInvoke).Invoke($_)
                }
            }

            if ($parameters.ScheduleInfo.Count -eq 0)
            {
                $parameters.Remove('ScheduleInfo')
            }
        }

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

    foreach ($RoleEligibilityScheduleSettings in $ConfigurationData.NonNodeData.Azure.RoleEligibilityScheduleSettings)
    {
        $resourceTitle = 'AzureRoleEligibilityScheduleSettings-{0}-{1}' -f $RoleEligibilityScheduleSettings.RoleDefinitionDisplayName,$RoleEligibilityScheduleSettings.ScopeId
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $RoleEligibilityScheduleSettings
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

    foreach ($Subscription in $ConfigurationData.NonNodeData.Azure.Subscription)
    {
        $resourceTitle = 'AzureSubscription-{0}' -f $Subscription.DisplayName
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $Subscription
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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

    foreach ($VerifiedIdFaceCheck in $ConfigurationData.NonNodeData.Azure.VerifiedIdFaceCheck)
    {
        $resourceTitle = 'AzureVerifiedIdFaceCheck-{0}-{1}-{2}' -f $VerifiedIdFaceCheck.SubscriptionId,$VerifiedIdFaceCheck.ResourceGroupName,$VerifiedIdFaceCheck.VerifiedIdAuthorityId
        $resourceTitle = $resourceTitle -replace "[^a-zA-Z0-9_\-\.\\\[\]]","_" -replace "__","_" -replace "__","_"

        $parameters = $VerifiedIdFaceCheck
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

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

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