我一直在尝试使用PowerShell测量DNS延迟。
我想检查DNS响应时间,并想跳过本地解析器缓存,因此我使用了import javax.swing.JFrame;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
public class One extends JFrame implements MouseMotionListener {
public One() {
this.setVisible(true);
this.setSize(400, 400);
}
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse being moved...");
}
public void mouseDragged(MouseEvent e) {
int x = e.getX(), y = e.getY();
System.out.println("(" + x + ", " + y + ")");
}
public static void main(String[] args) {
One a = new One();
a.addMouseMotionListener(a);
}
}
,它工作正常,除非将结果与nslookup
cmdlet的响应进行比较。
Resolve-DnsName
注意:我正在使用(Measure-Command { Resolve-DnsName www.google.com -DnsOnly }).TotalMillisecond
参数来确保-DnsOnly
仅将DNS协议用于名称解析。
Resolve-DnsName
在约10毫秒内返回响应,而Resolve-DnsName
在> 100毫秒后返回响应
我不确定nslookup
在内部如何工作,但是我不确定要依靠哪个结果。
答案 0 :(得分:1)
我将使用Resolve-DnsName
而不是nslookup
。
请参阅:The new nslookup: Resolve-DnsName。
您看到了速度的提高,因为Resolve-DnsName
是全新的本机PowerShell命令,在加载后可以在PowerShell实例中运行。 nslookup
是一个可执行文件,必须加载并在新线程等中运行。这使Resolve-DnsName
可以运行得更快,开销更少。另外,由于Resolve-DnsName
是PowerShell的本机命令,因此与nslookup
相比,它向您提供了更多的选择。
答案 1 :(得分:0)
Nslookup 不看 NRPT 表:Get-DnsClientNrptRule
-Resolve-DnsName 确实看表
-来自客户端机器查询 NRPT 的 DNS 查询
-因此,应使用 Resolve-DNS 而不是 nslookup
-另一种解决方案是使用 DIG 而不是 nslookup