Ответ nslookup намного медленнее по сравнению с ответом командлета Resolve-DnsName
Я пытался измерить задержку DNS с помощью PowerShell.
Я хочу проверить время отклика DNS и пропустить кеш локального распознавателя, поэтому я использовал nslookup
и это работает нормально, за исключением случаев, когда я сравнил результаты с Resolve-DnsName
Ответ командлета.
(Measure-Command { Resolve-DnsName www.google.com -DnsOnly }).TotalMillisecond
ПРИМЕЧАНИЕ: я использую -DnsOnly
аргумент, чтобы гарантировать, что Resolve-DnsName
использует протокол DNS только для разрешения имен.
Resolve-DnsName
возвращает ответ через ~10 мс nslookup
возвращает ответ через>100 мс
Я не уверен как Resolve-DnsName
внутренне работает, но я не уверен, на какой результат положиться.
2 ответа
Я хотел бы использовать Resolve-DnsName
вместо nslookup
,
Смотрите: Новый nslookup: Resolve-DnsName.
Вы видите улучшение скорости, потому что Resolve-DnsName
это новая встроенная команда PowerShell, которая после загрузки выполняется внутри экземпляра PowerShell. nslookup
исполняемый файл, который должен быть загружен и запущен в новом потоке и т. д. Это позволяет Resolve-DnsName
бежать намного быстрее и с меньшими накладными расходами. Также из-за Resolve-DnsName
является родной командой PowerShell, в ней доступно гораздо больше опций, чем nslookup
,
Nslookup не просматривает таблицу NRPT: Get-DnsClientNrptRule
-Resolve-DnsName просматривает таблицу
-DNS-запросы с клиентского компьютера запрашивают NRPT
-По этой причине следует использовать Resolve-DNS вместо nslookup.
-Другое решение — использовать DIG вместо nslookup.