DSCResources/DnsRecord/DnsRecord.Schema.psm1

Configuration DnsRecord {
    param (
        # Node Name Variable
        [Parameter(Mandatory)]
        [string]
        $NodeName,

        [Parameter(Mandatory)]
        [String]$DomainControllerName,

        [Parameter(Mandatory)]
        [String]$RecordName,

        [Parameter(Mandatory)]
        [String]$RecordValue,

        [Parameter(Mandatory)]
        [String]$ZoneName,

        [Parameter(Mandatory)]
        [String]$AdditionalUserOnRecord
    )
    
    Import-DscResource -ModuleName (
        @{ModuleName='ActiveDirectoryDsc'; RequiredVersion='6.0.1'},
        @{ModuleName='xDnsServer'; RequiredVersion='1.16.0.0'})

    node $NodeName {
        xDnsRecord TestRecord #ResourceName
        {
            Name = $RecordName
            Target = $RecordValue
            Type = 'ARecord'
            Zone = $ZoneName
            DnsServer = $DomainControllerName
            Ensure = 'Present'
        }
        $ZoneNameDcName = ($ZoneName -split "\.") -join ",DC="
        $ObjectPath = "DC=$RecordName,DC=$ZoneName,cn=MicrosoftDNS,DC=DomainDnsZones,DC=$ZoneNameDcName"

        ADObjectPermissionEntry addUserOnRecord
        {
            AccessControlType = 'Allow'
            ActiveDirectorySecurityInheritance = 'SelfAndChildren'
            IdentityReference = $AdditionalUserOnRecord
            InheritedObjectType = '00000000-0000-0000-0000-000000000000'
            ObjectType = '00000000-0000-0000-0000-000000000000'
            Path = $ObjectPath
            ActiveDirectoryRights = 'GenericAll'
            DependsOn = '[xDnsRecord]TestRecord'
            Ensure = 'Present'
        }
    }
}