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