您的位置:首页 > 运维架构 > Shell

PowerShell操作DNS创建SRV记录

2015-07-08 17:27 721 查看

需求来源:某个组织的Active Directory域,其中的一部分域控制器的SRV记录会无缘无故的丢掉,dcdiag检查dns的时候,发现一大堆报错,看到报错基本就不想弄了,实在太多……

PowerShell可以快速的创建A记录和DNS记录。

我们看一下标准的SRV记录是什么样子的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.com Description        :  DnsServerName      : DC.contoso.com DomainName         : _tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com InstallDate        :  Name               :  OwnerName          : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com Port               : 88 Priority           : 0 RecordClass        : 1 RecordData         : 0 100 88 dc2.contoso.com. SRVDomainName      : dc2.contoso.com. Status             :  TextRepresentation : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com IN SRV 0 100 88 dc2.contoso.com. Timestamp          : 3633513 TTL                : 600 Weight             : 100 PSComputerName     : DC我们注意一下,有用的地方是如下几行ContainerName      : _msdcs.contoso.com DnsServerName      : DC.contoso.com OwnerName          : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com RecordData         : 0 100 88 dc2.contoso.com. TextRepresentation : _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.contoso.com IN SRV 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. 这句中,则包含了我们要手动输入的所有信息。

我们构造一句话,最后一句就实现了目标功能$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 IN SRV 0 100 88 dc3332.contoso.com.)最后再来完善一下,在非5大角色的域控制器上运行 dcdiag /test:dns /s:domainname /v 看一下dns输出记录。可以添加相应条目#脚本需要在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")|select RR #增加“GC”“站点”中的tcp ldap记录 $mydns.CreateInstanceFromTextRepresentation($dnsServerName,$containerName,"_ldap._tcp.$site._sites.gc IN SRV 0 100 88 $hostdc")|select RR

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: