首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何强制Dns.GetHostAddresses .NET方法仅查询DNS或DNS缓存?

如何强制Dns.GetHostAddresses .NET方法仅查询DNS或DNS缓存?
EN

Stack Overflow用户
提问于 2014-04-03 23:22:12
回答 2查看 1.4K关注 0票数 1

当我使用.NET GetHostAddresses方法在服务器上的PowerShell中运行以下DNS查询时,我得到以下结果:

代码语言:javascript
运行
复制
([System.Net.Dns]::GetHostAddresses("hostname")).ipaddresstostring
10.10.10.55

我正在远程运行这个查询。

但是,当我在实际的服务器上本地运行相同的查询时,我得到了以下结果:

代码语言:javascript
运行
复制
([System.Net.Dns]::GetHostAddresses("hostname")).ipaddresstostring
10.10.10.55
10.10.34.101
10.10.138.154

显然,它为我提供了没有在DNS中注册的其他接口的IP地址,因为我在本地运行该方法。

因此,我的问题是,如何强制该方法只查询DNS或DNS缓存,而不是首先查询本地主机信息?换句话说,我如何才能在服务器上本地运行这个方法,以获得它在远程运行时给我的输出?

我只需要与DNS关联的IP地址,无论我是远程运行还是本地运行。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-04-03 23:33:26

另一种“逃课”方式:

代码语言:javascript
运行
复制
function dnsLookup($hostname){
    $r = (nslookup $hostname | Out-String).split("`n")
    for($i = 4; $i -lt ($r.count - 2); $i++){
    $r[$i] -replace "Address:  |Addresses:  | |`t",""
    }   
}

因此,运行dnsLookup YourHost将产生所需的结果,但这是一个肮脏的变通方法。

票数 1
EN

Stack Overflow用户

发布于 2014-04-03 23:41:22

如果需要查询DNS缓存,可能需要在Win32应用程序接口中使用DnsQuery()方法,并使用.NET P/Invoke从PowerShell调用它。查看这个StackOverflow问题:Retrieving what's in the DNS cache

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22842082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档