GetHostByAddress 有效了吗?

GetHostByAddress valid anymore?

我的所有 PS 远程工具都依赖于我编写的一个函数,该函数运行以下代码来解析主机名。

这今天停止工作,现在导致此错误。 我环顾四周并尝试了 GetHostEntry,但这似乎只有 return IP 地址。

$Computername = ([Net.Dns]::GetHostByAddress($IPAddress)).HostName

"Exception calling "GetHostByAddress" with "1" 个参数:"请求的 姓名 有效,但未找到请求类型的数据” 在 line:1 char:28 + [Net.Dns]::GetHostByAddress <<<< ($IP).主机名 + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

我要做的第一件事是独立确认感兴趣的 PTR 记录仍在 DNS 中。在 Windows 上,我会使用 nslookup。例如,要查找 IP 10.1.2.3 的主机信息:

nslookup
> set type=ptr
> 3.2.1.10.in-addr.arpa.
Server:     127.0.0.1
Address:    127.0.0.1#53

** server can't find 1.2.3.10.in-addr.arpa: NXDOMAIN
>

如果您像上面那样取回 NXDOMAIN,那么您使用的是什么调用都没有关系...数据不存在。

如果您确实得到了答复,那么可能实际上是 API 电话。此页面 https://docs.microsoft.com/en-us/dotnet/api/system.net.dns.gethostbyaddress?view=netframework-4.8 确实指定 GetHostByAddress 方法已过时并使用 GetHostEntry,就像您尝试过的那样。 GetHostEntry 仅返回 IP 地址的事实表明 PTR 记录已消失,或者可能无法从您查询的位置访问,或者您可能没有 DNSPermission 所要求的打电话。