I am creating a AG listener in Windows Cluster using powershell srcipts.
Add-ClusterResource doesn't create ADAware resource. I hope I am not using the correct account to create the resource. You can see the Name not configure and DNS name of the resource is missing the cluster properties.
Listener properties Error while trying to add Listener name in DNS
I tested the listener creation manually it works fine. Cluster service has permissions to create Computer objects. It work manually fine.
Using below powershell script
$listenerResource = $AvailabilityGroup + "_Listener_" + $newAGListenerSuffix
Add-ClusterResource -Cluster $cluster -Name $listenerResource -Group $AvailabilityGroup - ResourceType 'Network Name'
Write-Verbose "Additional Availability group listener name - $listenerResource has been created"
$ec2Instance = ''
$instanceId = ''
$IP = ''
$subnetMask = ''
$networkInterface = Get-ClusterNetworkInterface -Cluster $cluster -Node $node
$IPDetails = @{
Network=$networkInterface.Network
Address=$IP
SubnetMask=$subnetMask
EnableDhcp=0
}
$ipResourceName = $listenerResource + '_' + $IP
#Add Cluster resource type IP Address for Listener.
$IPAddressResource = (Add-ClusterResource -Cluster $cluster -Name $ipResourceName -Group $AvailabilityGroup -ResourceType 'IP Address')
#Pass IP address properties of the listener in $IPDetails
Get-ClusterResource -Cluster $cluster -Name $IPAddressResource.Name | Set-ClusterParameter -Multiple $IPDetails
Write-Verbose "New listener IP Address $IPAddressResource has been created for $node."
#Create dependency on the IP address for Listener Name. By default the dependency on ip's is created using 'AND' (ie on all ip's)
Add-ClusterResourceDependency -Cluster $cluster -Resource $listenerResource -Provider $ipResourceName
#I get error in the below section because the listener resource is not online.
** #Listener requirement is the have dependency on one of the IP's. Hence resetting the dependency with 'or'.
$listenerDependency = (Get-ClusterResourceDependency -Cluster $cluster -Resource $listenerResource)
Set-ClusterResourceDependency -Resource $listenerResource -Dependency $listenerDependency.DependencyExpression.Replace('and','or')
Write-Verbose "New listener IP Address $IPAddressResource dependency has been created for $node."**
Write-Verbose "Stopping $AvailabilityGroup"
Stop-ClusterGroup -Cluster $cluster -Name $AvailabilityGroup
<#Create AG dependency on the Listener. By default dependency is created on all listeners with 'and'. #>
Add-ClusterResourceDependency -Cluster $cluster -Resource $AvailabilityGroup -Provider $listenerResource
#Set AG dependencies to be dependent on any one online listener resource.
$AGDependency = (Get-ClusterResourceDependency -Cluster $cluster -Resource $listenerResource)
Set-ClusterResourceDependency -Resource $AvailabilityGroup -Dependency $AGDependency.DependencyExpression.Replace('and','or')
Write-Verbose "Availability group $AvailabilityGroup dependency on listener $listenerResource has been created"
#Set HostRecordTimeToLive. To let Clients refresh the DNS cache of the Cluster details.
#Set RegisterAllProvidersIP to '0', To let the clients connect only to Primary IP address.****
$cluster | Get-Clusterresource -Name $listenerResource | Set-ClusterParameter -Name HostRecordTTL -Value $HostRecordTimeToLive
$cluster | Get-ClusterResource -Name $listenerResource | Set-ClusterParameter RegisterAllProvidersIP 0
Write-Verbose "HostRecordTimeToLive set to $HostRecordTimeToLive, RegisterAllProvidersIP set to 0"
Write-Verbose "Starting $AvailabilityGroup"
Start-ClusterGroup -Cluster $cluster -Name $AvailabilityGroup