Ответ 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.

Другие вопросы по тегам