Powershell 比较;nslookup主机“;至;“NSIP查找”;

Powershell 比较;nslookup主机“;至;“NSIP查找”;,powershell,batch-file,vbscript,dns,nslookup,Powershell,Batch File,Vbscript,Dns,Nslookup,我需要使用标准Windows工具(CMD、VBS、POWERSHELL)确定主机DNS查找是否与Windows平台上IP DNS查找的输出相匹配 以下是一个例子- 使用NSLOOKUP查询主机名(haw1) C:>nslookup haw1 Server: myserver.blah.org Address: 172.22.14.10 Name: haw1.blah.org Address: 172.40.82.70 然后从#1中的结果查询IP地址 比较结果,看它们是否

我需要使用标准Windows工具(CMD、VBS、POWERSHELL)确定主机DNS查找是否与Windows平台上IP DNS查找的输出相匹配

以下是一个例子-

  • 使用NSLOOKUP查询主机名(haw1)

    C:>nslookup haw1
    Server:  myserver.blah.org
    Address:  172.22.14.10
    
    Name:    haw1.blah.org
    Address:  172.40.82.70
    
  • 然后从#1中的结果查询IP地址

  • 比较结果,看它们是否匹配。在这个例子中 haw1.blah.org ghi.blah.org

  • 输出类似“haw1.blah.org不匹配”或 “haw1.blah.org匹配”取决于结果

  • 你知道如何做到这一点吗

    添加到目前为止我所拥有的

    这将留给我项目的FQDN和名称从DNS返回的IP。我不知道如何进行反向DNS查找和比较

    我得到的只是部分解决方案

    if exist name.txt del name.txt
    if exist address.txt del address.txt
    nslookup %1 > out.txt
    type out.txt | find /v /i "server" >out1.txt
    del out.txt
    type out1.txt | find /v /i "172.22.14.10" >out.txt
    del out1.txt
    type out.txt | find /i "name" > name.txt
    type out.txt | find /i "address:" > address.txt
    del out.txt
    for /f "tokens=2" %%i in (name.txt) do echo %%i >name1.txt
    del name.txt
    for /f "tokens=2" %%i in (address.txt) do echo %%i >address1.txt
    del address.txt
    

    正如TessellingHeckler指出的那样,在很多情况下,这种方法都会失败。下面是一个PowerShell方法,它使用.Net中的
    Net.DNS
    ,应该可以在Windows 7上使用:

    $ComputerName = "haw1"
    $NameLookup = [Net.DNS]::GetHostEntry($ComputerName)
    $IPAddress = @($NameLookup.AddressList)[0].IPAddressToString
    $IPLookup = [Net.DNS]::GetHostEntry($IPAddress)
    $NameLookup.HostName -eq $IPLookup.HostName
    

    你尝试过什么,你尝试过的又是如何失败的?因此,这不是一个代码编写服务;最好的问题是那些提供有用信息的问题,这样那些回答问题的人可以引导你设计出自己的正确答案。请参阅。然后查询IP地址-是什么让您认为只有一个IP地址?否则就不会有CNAMEs了?或者只有一个PTR条目?使用
    Resolve DnsName
    ,但由于“此问题不显示任何研究成果”的原因,通常在DNS中显示不再存在的设备时进行向下投票,并且为新设备分配了相同的IP。我正在尝试确定是否发生这种情况:NSLOOKUP comp1返回172.10.10.10反向查找NSLOOKUP 172.10.10.10返回comp2。已验证NSLOOKUP comp2->172.10.10.10(抱歉,我不知道如何在注释中编写代码)我不是DNS人员,但我必须整天手动执行此操作并尝试将其自动化。Resolve-DnsName对Windows 7无效,因此这不是适用于任何受支持的Windows版本的答案此问题由Windows自动解决
    $ComputerName = "haw1"
    $NameLookup = [Net.DNS]::GetHostEntry($ComputerName)
    $IPAddress = @($NameLookup.AddressList)[0].IPAddressToString
    $IPLookup = [Net.DNS]::GetHostEntry($IPAddress)
    $NameLookup.HostName -eq $IPLookup.HostName