Как разрешить последние результаты DNS CName через powershell - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь разрешить последнюю версию DNS CName, используя следующий скрипт powershell. Однако из-за кэширования DNS-сервера я получаю кэшированное имя хоста, которое не является последним CName. Есть ли способ избежать этого и получить последние результаты? (как в digwebinterface.com)

После этого я вызываю сторонний API управления DNS, который будет изменять или создавать сопоставление DNS CName. Для этого мне нужны последние данные днс.

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

2 голосов
/ 27 июня 2019

Это не проблема или ошибка PowerShell.Это условие среды.

Почему вы не просто очищаете кеш как часть того, что делаете?

Вы говорите, что командлеты DnsClientCache или Ipconfig -FlushDNS не дают вам то, что вам нужно?вы после?

Командлет Clear-DnsClientCache удаляет все содержимое кэша DNS-клиента.Запуск этого командлета эквивалентен запуску 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
        …
#>
0 голосов
/ 16 июля 2019

Извиняюсь за поздний ответ, наконец, я решил использовать API решения DNS (Ansible Tower), чтобы получить CName для имени хоста.

Решение Powershell-DnsName -Dns. Для распространения DNS требуется только некоторое время. Однако мой конвейер выпуска ожидает, что распространение будет сделано в течение нескольких минут. На самом деле он делает пару изменений в имени хоста.

Использование ключа -DnsOnly разрешит запрос, используя только протокол DNS. Даже для разрешения последних результатов DNS требуется некоторое время. Поэтому мне пришлось пойти с API, и он работал без каких-либо проблем с задержкой.

0 голосов
/ 27 июня 2019

Для повторного тестирования DNS, которое необходимо изменить, когда ответственный сервер nMe меняет адрес, запросите соответствующий сервер namd напрямую.

Очистка кэша на стороне клиента не повлияет на Resolve-DNSName ], так как он идентифицируетNSLookup эквивалентно, и поэтому запрашивает удаленный сервер напрямую, вместо использования обычного механизма распознавания хоста.

Итак, вы должны найти серверы имен для $VanityHostName с полдюжины методов, таких как arin или 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...