【问题标题】:How to resolve latest DNS CName results via powershell如何通过 powershell 解析最新的 DNS CName 结果
【发布时间】:2019-06-26 23:34:57
【问题描述】:

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

之后我调用第三方 DNS 管理 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 dns


    【解决方案1】:

    这不是 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
            …
    #>
    

    【讨论】:

    • OP 明确表示“DNS server 缓存”,而不是“DNS client 缓存”。我认为@Kasunu 是在询问如何在查询中告诉 DNS 服务器不要从它自己的缓存中获取答案,而是上 DNS 树并从根开始。
    【解决方案2】:

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

    Powershell Resolve-DnsName -DnsOnly 需要一些时间来传播 DNS。然而,我的发布管道预计传播将在几分钟内完成。它实际上对主机名进行了一些更改。

    使用 -DnsOnly 开关将仅使用 DNS 协议解析查询。即使这样也需要一些时间来解析最新的 DNS 结果。因此我不得不使用 API,它没有任何延迟问题。

    【讨论】:

      【解决方案3】:

      对于重复的DNS测试,当负责的nMe服务器更改地址时需要更改,请直接查询负责的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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多