奇怪的DNS记录重复与Powershell?

42fyovps  于 2023-01-05  发布在  Shell
关注(0)|答案(1)|浏览(195)

最近在使用Powershell原生DNS命令时,特别是Get-DNSServerResourceRecord,我注意到一些奇怪的东西,对我来说没有意义。
当我使用本地DNS工具、LDAP查询工具甚至ADSIedit查看我的区域时,我只看到一个表示给定主机名的DNS对象。
然而,当我对Powershell执行同样的操作时,我得到了给定主机的两个对象,一个是NETBIOS名称,另一个是FQDN,所有其他属性都是相同的,包括IP。
例如,如果我有一台名为computer 1的计算机:这就是我看到的。

PS C:\> Get-DnsServerResourceRecord -ZoneName 'mydomain.local' -RRType A -ComputerName 'DNSServer1' | Where-Object {$_.hostname -like "Computer1*"}  | fl *

DistinguishedName     : DC=computer1.mydomain.local,DC=mydomain.local,cn=MicrosoftDNS,DC=DomainDnsZones,DC=mydomain,DC=local
HostName              : COMPUTER1.mydomain.local
RecordClass           : IN
RecordData            : DnsServerResourceRecordA
RecordType            : A
Timestamp             :
TimeToLive            : 01:00:00
Type                  : 1
PSComputerName        :
CimClass              : root/Microsoft/Windows/DNS:DnsServerResourceRecord
CimInstanceProperties : {DistinguishedName, HostName, RecordClass, RecordData...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

DistinguishedName     : DC=computer1,DC=mydomain.local,cn=MicrosoftDNS,DC=DomainDnsZones,dc=mydomain,dc=local
HostName              : COMPUTER1
RecordClass           : IN
RecordData            : DnsServerResourceRecordA
RecordType            : A
Timestamp             :
TimeToLive            : 01:00:00
Type                  : 1
PSComputerName        :
CimClass              : root/Microsoft/Windows/DNS:DnsServerResourceRecord
CimInstanceProperties : {DistinguishedName, HostName, RecordClass, RecordData...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

我很困惑为什么Powershell会显示这个,以及它实际上是从哪里拉出来的。我无法使用本地LDAP工具找到这些FQDN对象,甚至ADFind。
这是Powershell DNS cmdlet的一些奇怪的工件/错误吗?或者DNS记录为给定主机存储了两个条目,但使用本地工具只显示一个?
这两个对我来说都没有意义,因为我不希望cmdlet只是动态地构造DN值,并且这不会发生在所有主机记录上。后者似乎不可能,因为这不会发生在区域中的所有记录上。我没有fqdn的记录比有fqdn的记录多大约100个(10926对10824)。

EDIT如果有帮助的话,下面是针对同一对象(和通配符)的ADFind查询。

C:\temp>adfind -h dnsserver1 -domaindns -f "(&(name=computer1*))" name

AdFind V01.57.00cpp Joe Richards (support@joeware.net) November 2021

Using server: dnsserver1.mydomain.local:389
Directory: Windows Server 2016
Base DN: DC=DomainDnsZones,DC=ad,DC=ewsad,DC=net

dn:DC=computer1,DC=mydomain.local,CN=MicrosoftDNS,DC=DomainDnsZones,DC=mydomain,DC=local
>name: computer1

1 Objects returned
91zkwejq

91zkwejq1#

我可以证实这种行为。
在powershell中,对于许多计算机(可能是所有计算机,我没有检查),这会返回2个结果。

Get-DnsServerResourceRecord -ZoneName 'domain.com' -RRType A -ComputerName dnserver1 | where hostname -like Computer1*

DistinguishedName     : DC=Computer1.domain.com,DC=domain.com,cn=MicrosoftDNS,DC=DomainDnsZones,DC=domain,DC=com
HostName              : Computer1.domain.com
RecordClass           : IN
RecordData            : DnsServerResourceRecordA
RecordType            : A
Timestamp             : 12/8/2022 9:00:00 AM
TimeToLive            : 00:20:00
Type                  : 1
PSComputerName        :
CimClass              : root/Microsoft/Windows/DNS:DnsServerResourceRecord
CimInstanceProperties : {DistinguishedName, HostName, RecordClass, RecordData...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

DistinguishedName     : DC=Computer1,DC=domain.com,cn=MicrosoftDNS,DC=DomainDnsZones,DC=domain,DC=com
HostName              : Computer1
RecordClass           : IN
RecordData            : DnsServerResourceRecordA
RecordType            : A
Timestamp             : 12/8/2022 9:00:00 AM
TimeToLive            : 00:20:00
Type                  : 1
PSComputerName        :
CimClass              : root/Microsoft/Windows/DNS:DnsServerResourceRecord
CimInstanceProperties : {DistinguishedName, HostName, RecordClass, RecordData...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

但一次查询只会产生一条记录。

dsquery computer -name computer1* -s dnsserver1

"CN=Computer1,OU=Computers,DC=domain,DC=com"

您只能确认其中一个是真实的的AD对象。

$recordlist = Get-DnsServerResourceRecord -ZoneName 'domain.com' -RRType A -ComputerName dnserver1 | where hostname -like Computer1*

foreach($record in $recordlist){
    Write-Host "Checking DN $($record.DistinguishedName)" -ForegroundColor Cyan
    
    $found = $record.DistinguishedName |
        Get-ADObject -ErrorAction SilentlyContinue

    if($found){
        Write-Host "Record found in AD" -ForegroundColor Green
    }
    else{
        Write-Host "Record not in AD" -ForegroundColor DarkGray
    }
}

因此,我必须得出结论,到目前为止,证据确实表明Get-DnsServerResourceRecord也添加了一个具有FQDN的重复记录,希望有人能找到或知道为什么它以这种方式实现。

相关问题