如何通过PowerShell解决最新的DNS CNAME结果



我正在尝试使用以下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

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

为什么不仅清除缓存是您正在做的事情的一部分?

您是说DNSClientCache cmdlet或ipconfig -flushdns没有给您您的想法吗?

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
        …
#>

对较晚的响应表示歉意,最后我决定使用DNS解决方案(Ansible Tower(API来获取主机名的cname。

powershell resolve -dnsname -dnsonly花费一些时间来传播DNS。但是,我的发布管道预计传播将在几分钟内完成。实际上,它正在对主机名进行几次更改。

使用-dnsonly Switch的使用将仅使用DNS协议解决查询。即使这也需要一些时间来解决最新的DNS结果。因此,我不得不使用API,并且没有任何延迟问题。

用于重复出现的DNS测试,当负责任的NME服务器更改地址时,Tou需要更改,直接查询负责的NAMD服务器。

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

因此,您应该在 $VanityHostName unding或dnstoolbox等六打方法中找到名称服务器,然后将网站的名称服务器指定为您查询中的服务器的名称服务器(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

最新更新