使用Resolve-DnsName如何获取DNS服务器地址?nslookup可正常返回
获取Resolve-DnsName查询所用的DNS服务器地址
Resolve-DnsName默认不会直接返回查询时使用的DNS服务器地址,但可以通过以下两种方式获取:
1. 通过详细输出查看
使用-Verbose参数执行命令,详细日志里会明确显示本次查询使用的DNS服务器:
Resolve-DnsName whoami.ultradns.net -Type A -Verbose
执行后在输出的Verbose信息中,会看到类似Querying DNS server '208.67.222.222'.的内容,这里的IP就是你需要的DNS服务器地址。
2. 结构化获取DNS服务器并指定查询
如果需要以可处理的结构化数据形式获取,先通过Get-DnsClientServerAddress获取当前系统配置的DNS服务器列表,再逐个指定服务器执行Resolve-DnsName:
# 获取当前网卡的IPv4 DNS服务器 $dnsServers = (Get-DnsClientServerAddress -AddressFamily IPv4).ServerAddresses # 逐个查询并关联服务器地址 foreach ($server in $dnsServers) { $result = Resolve-DnsName whoami.ultradns.net -Type A -DnsServer $server -ErrorAction SilentlyContinue if ($result) { [PSCustomObject]@{ DnsServer = $server RecordName = $result.Name IpAddress = $result.IPAddress } } }
这样就能得到每个DNS服务器对应的查询结果,同时明确关联上服务器地址。
需要注意:当系统配置多个DNS服务器时,Resolve-DnsName会按顺序使用第一个能返回有效结果的服务器,因此-Verbose参数输出的是实际参与本次查询的服务器地址。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

