首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以从IP地址获取主机名,而不依赖于DNS查询?

问有没有一种方法可以从IP地址获取主机名,而不依赖于DNS查询?
EN

Stack Overflow用户
提问于 2017-07-21 23:58:07
回答 6查看 49.6K关注 0票数 9

我正在尝试编写一个脚本,它依赖于知道网段上的计算机的名称,但我找到的所有脚本都依赖于DNS查询,而DNS查询只回复几台计算机的名称。例如:

代码语言:javascript
复制
[System.Net.Dns]::GetHostbyAddress($IPAddress) 

我也尝试过使用

代码语言:javascript
复制
Ping -a $ipaddress

但是这通常也不能返回机器名。有没有办法直接问主机它的名称是什么,以及在AD中可能需要什么级别的权限才能获得响应?

提前谢谢。

EN

回答 6

Stack Overflow用户

发布于 2017-07-24 23:06:11

[System.Net.DNS]::GetHostByAddress() (现在的[System.Net.DNS]::GetHostEntry())并不只依赖于DNS,尽管它的名字。它还将检查本地C:\Windows\System32\Drivers\etc\hosts文件中是否有本地配置的条目。

通过nslookup直接解析找不到域名:

代码语言:javascript
复制
PS C:\Users\Tim> nslookup 192.168.1.50
Server:  dns03
Address:  192.168.2.103

*** rpi03 can't find 192.168.1.50: Non-existent domain

但是,gethostentry()仍然可以找到名称:

代码语言:javascript
复制
PS C:\Users\Tim> [system.net.dns]::gethostentry('192.168.1.50')

HostName  Aliases AddressList
--------  ------- -----------
localentry {}      {192.168.1.50}
票数 5
EN

Stack Overflow用户

发布于 2017-07-24 22:32:18

您可以尝试使用如下命令: Invoke-Command {Get-Item HKLM:\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName}活动计算机名等于您的-computername名称(当然没有后缀)

票数 0
EN

Stack Overflow用户

发布于 2017-07-24 23:26:30

我可能误解了这个问题,但是您可以使用到远程计算机的CIM会话来查询Win32_ComputerSystem实例,并使用其中一个属性(名称、DNSName等)在本地运行它会像这样

代码语言:javascript
复制
Get-CimInstance -namespace root/cimv2 -classname Win32_ComputerSystem | fl *

我知道WMI可能需要相当高的权限(例如,域管理员),但(a)对于您的用例来说,这可能不是不可能的,(b)您可能能够使用较少的权限执行一些有限的查询。

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

https://stackoverflow.com/questions/45242022

复制
相关文章

相似问题

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