我正在尝试编写一个脚本,它依赖于知道网段上的计算机的名称,但我找到的所有脚本都依赖于DNS查询,而DNS查询只回复几台计算机的名称。例如:
[System.Net.Dns]::GetHostbyAddress($IPAddress) 我也尝试过使用
Ping -a $ipaddress但是这通常也不能返回机器名。有没有办法直接问主机它的名称是什么,以及在AD中可能需要什么级别的权限才能获得响应?
提前谢谢。
发布于 2017-07-24 23:06:11
[System.Net.DNS]::GetHostByAddress() (现在的[System.Net.DNS]::GetHostEntry())并不只依赖于DNS,尽管它的名字。它还将检查本地C:\Windows\System32\Drivers\etc\hosts文件中是否有本地配置的条目。
通过nslookup直接解析找不到域名:
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()仍然可以找到名称:
PS C:\Users\Tim> [system.net.dns]::gethostentry('192.168.1.50')
HostName Aliases AddressList
-------- ------- -----------
localentry {} {192.168.1.50}发布于 2017-07-24 22:32:18
您可以尝试使用如下命令: Invoke-Command {Get-Item HKLM:\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName}活动计算机名等于您的-computername名称(当然没有后缀)
发布于 2017-07-24 23:26:30
我可能误解了这个问题,但是您可以使用到远程计算机的CIM会话来查询Win32_ComputerSystem实例,并使用其中一个属性(名称、DNSName等)在本地运行它会像这样
Get-CimInstance -namespace root/cimv2 -classname Win32_ComputerSystem | fl *我知道WMI可能需要相当高的权限(例如,域管理员),但(a)对于您的用例来说,这可能不是不可能的,(b)您可能能够使用较少的权限执行一些有限的查询。
https://stackoverflow.com/questions/45242022
复制相似问题