如何通过Powershell解析最新的DNS CName结果

时间:2019-06-26 23:34:57

标签: powershell dns

我正在尝试使用以下Powershell脚本解析最新的DNS CName。但是由于DNS服务器缓存,我得到的缓存主机名不是最新的CName。 无论如何要避免这种情况并获得最新结果? (如digwebinterface.com中一样)

然后,我要调用第三方DNS管理API,该API将修改或创建DNS CName映射。为此,我需要最新的dns数据。

#resolve the dns host name
$resolvedCName = Resolve-DnsName -Name $vanityHostName -DnsOnly -Type CNAME | 
Select-Object -First 1 -Property Name,NameHost  

write-host $resolvedCName.NameHost

3 个答案:

答案 0 :(得分:2)

这不是PowerShell问题或错误。这是环境条件。

为什么您不只是在执行操作时清除缓存?

您是在说DnsClientCache cmdlet或Ipconfig -FlushDNS不能给您带来什么?

The Clear-DnsClientCache cmdlet删除DNS客户端缓存的所有内容。运行此cmdlet等效于运行ipconfig / flushdns。

Get-Command -Name Clear-DnsClientCache | Format-Table -AutoSize

<#
CommandType     Name                   Version    Source 
-----------     ----                   -------    ------  
Function        Clear-DnsClientCache   1.0.0.0    DnsClient 
#>


# get function / cmdlet details
Get-Command -Name Clear-DnsClientCache -Syntax
(Get-Command -Name Clear-DnsClientCache).Parameters.Keys
Get-help -Name Clear-DnsClientCache -Full
Get-help -Name Clear-DnsClientCache -Online
Get-help -Name Clear-DnsClientCache -Examples


ipconfig /?

<#
USAGE:
    ipconfig [/allcompartments] [/? | /all | 
                                 /renew [adapter] | /release [adapter] |
                                 /renew6 [adapter] | /release6 [adapter] |
                                 /flushdns | /displaydns | /registerdns |
                                 /showclassid adapter |
                                 /setclassid adapter [classid] |
                                 /showclassid6 adapter |
                                 /setclassid6 adapter [classid] ]

where
    adapter             Connection name 
                       (wildcard characters * and ? allowed, see examples)

    Options:
        ...
       /flushdns        Purges the DNS Resolver cache.
       /registerdns     Refreshes all DHCP leases and re-registers DNS names
        …
#>

答案 1 :(得分:0)

对于负责的nMe服务器更改地址时您需要进行更改的重复DNS测试,请直接查询负责的namd服务器。

清除客户端缓存不会影响Resolve-DNSName ],因为它等同于NSLookup,因此直接查询远程服务器,而不使用主机的常规解析程序机制。

因此,您应该使用六种方法(例如arin或dnstoolbox)找到$VanityHostName的名称服务器,然后将站点的名称服务器指定为查询中的服务器,如下所示(4.2.2.2是网站名称服务器地址的占位符。)

  #resolve the dns host name
  $resolvedCName = Resolve-DnsName -Name $vanityHostName -DnsOnly -Type CNAME -Server '4.2.2.2' | Select-Object -First 1 -Property Name,NameHost  

write-host $resolvedCName.NameHost

答案 2 :(得分:0)

道歉,最后我决定使用DNS解决方案(Ansible Tower)API来获取主机名的CName。

Powershell Resolve-DnsName -Dns仅花费一些时间来传播DNS。但是,我的发布管道希望在几分钟内完成传播。实际上,它正在对主机名进行几处更改。

使用-DnsOnly开关将仅使用DNS协议来解析查询。即使这样也需要一些时间才能解决最新的DNS结果。因此,我必须使用该API,并且它可以正常工作而不会出现任何延迟问题。