需求来源:某个组织的Active Directory域,其中的一部分域控制器的SRV记录会无缘无故的丢掉,dcdiag检查dns的时候,发现一大堆报错,看到报错基本就不想弄了,实在太多……
PowerShell可以快速的创建A记录和DNS记录。
我们看一下标准的SRV记录是什么样子的
| 
         1
         
         2
         
         3
         
         4
         
         5
         
         6
         
         7
         
         8
         
         9
         
         10
         
         11
         
         12
         
         13
         
         14
         
         15
         
         16
         
         17
         
         18
         
         19
         
         20
         
         21
         
         22
         
         23
         
         24
         
         25
         
         26
         
         27
         
         28
         
         29
         
         30
         
         31
         
         32
         
         33
         
         34
         | PS C:\>Get-WmiObject-Namespace root\MicrosoftDNS -class microsoftdns_srvtype | ? {$_.DnsServerName -eq"dc.contoso.com"}__GENUS            : 2__CLASS            : MicrosoftDNS_SRVType__SUPERCLASS       : MicrosoftDNS_ResourceRecord__DYNASTY          : CIM_ManagedSystemElement__RELPATH          : MicrosoftDNS_SRVType.ContainerName="_msdcs.contoso.com",DnsServerName="DC.contoso.com",DomainName="_tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com",OwnerName="_kerberos.                     _tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com",RecordClass=1,RecordData="0 100 88 dc2.contoso.com."__PROPERTY_COUNT   : 18__DERIVATION       : {MicrosoftDNS_ResourceRecord, CIM_LogicalElement, CIM_ManagedSystemElement}__SERVER           : DC__NAMESPACE        : root\MicrosoftDNS__PATH             : \\DC\root\MicrosoftDNS:MicrosoftDNS_SRVType.ContainerName="_msdcs.contoso.com",DnsServerName="DC.contoso.com",DomainName="_tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com                     ",OwnerName="_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com",RecordClass=1,RecordData="0 100 88 dc2.contoso.com."Caption            : ContainerName      : _msdcs.contoso.comDescription        : DnsServerName      : DC.contoso.comDomainName         : _tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.comInstallDate        : Name               : OwnerName          : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.comPort               : 88Priority           : 0RecordClass        : 1RecordData         : 0 100 88 dc2.contoso.com.SRVDomainName      : dc2.contoso.com.Status             : TextRepresentation : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com INSRV 0 100 88 dc2.contoso.com.Timestamp          : 3633513TTL                : 600Weight             : 100PSComputerName     : DC | 
我们注意一下,有用的地方是如下几行
| 
         1
         
         2
         
         3
         
         4
         
         5
         | ContainerName      : _msdcs.contoso.comDnsServerName      : DC.contoso.comOwnerName          : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.comRecordData         : 0 100 88 dc2.contoso.com.TextRepresentation : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com INSRV 0 100 88 dc2.contoso.com. | 
首先要说明的就是容器名,这里主要是注意,msdcs这个容器。另外dnsservername就是当前需要操作的域控制器名。
在TextRepresentation : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com IN SRV 0 100 88 dc2.contoso.com. 这句中,则包含了我们要手动输入的所有信息。
我们构造一句话,最后一句就实现了目标功能
| 
         1
         
         2
         
         3
         
         4
         | $dnsServerName="dc.contoso.com"$containerName="_msdcs.contoso.com"$mydns= [WMIClass]"ROOT\MicrosoftDNS:MicrosoftDNS_ResourceRecord"$mydns.CreateInstanceFromTextRepresentation($dnsServerName,$containerName,_kerberos._tcp.Default-First-Site-Name._sites INSRV 0 100 88 dc3332.contoso.com.) | 
最后再来完善一下,在非5大角色的域控制器上运行 dcdiag /test:dns /s:domainname /v 看一下dns输出记录。可以添加相应条目
| 
         1
         
         2
         
         3
         
         4
         
         5
         
         6
         
         7
         
         8
         
         9
         
         10
         
         11
         | #脚本需要在PowerShell中运行,首先打开cmd,然后输入PowerShell。 最后在脚本当前目录,输入   .\xxxx.ps1$hostdc= Read-Host“(请输入需要添加SRV记录的域控制器的netbios名)”$dnsServerName="dc.contoso.com"$containerName="_msdcs.contoso.com"$containerName2="contoso.com"$site="Default-First-Site-Name"#此处输入站点名$mydns= [WMIClass]"ROOT\MicrosoftDNS:MicrosoftDNS_ResourceRecord"#增加 “DC”“站点”中的kerberos的tcp srv记录$mydns.CreateInstanceFromTextRepresentation($dnsServerName,$containerName,"_kerberos._tcp.$site._sites.dc IN SRV 0 100 88 $hostdc")|selectRR#增加“GC”“站点”中的tcp ldap记录$mydns.CreateInstanceFromTextRepresentation($dnsServerName,$containerName,"_ldap._tcp.$site._sites.gc IN SRV 0 100 88 $hostdc")|selectRR | 
本文转自 九叔 51CTO博客,原文链接:http://blog.51cto.com/jiushu/1672103,如需转载请自行联系原作者
