确定networking上Windows系统的主机名

我需要确定远程Windows系统的主机名。 典型的基于DNS的方法不适用于我的情况。

ping -a 1.1.1.1 nslookup 1.1.1.1 nbtstat -a -n 1.1.1.1 

理想情况下,要确定机器声称它是自己的主机名(是什么它报告在某个时刻),我想直接查询系统。

由于RDP服务在远程PC上可用,有没有办法查询RDP服务的主机名?

(因为我不知道是谁的电脑,所以这个请求对最终用户来说是非侵入性的)

我将通过wmi连接到远程机器,并使用win32_computer system.name。 EG(gwmi win32_computersystem -computer 192.168.1.1).name

如果您的客户端是Windows 7或更新版本,您可以通过WMI获取此信息,如JimB提及的一个单线程 Powershell:

 Get-WmiObject win32_computersystem -ComputerName 192.168.161.5 | Select-Object Name 

应该与Windows Server 2003或更新的客户端一起工作。

如果你想要它作为一个string而不是一个对象,

 Get-WmiObject win32_computersystem -ComputerName 192.168.161.108 | %{$_.Name} 

如果你更喜欢更多的GUIsh,有一个名为NetScan的优秀实用程序(和IMHO,比其他类似的实用程序更好的function)。

这个实用程序的巨大优势是它可以添加具有WMI查询结果的列。
它带有一些预先构build的WMI查询,但您可以根据需要添加任意数量的查询。
您需要的查询是一个简单的 – SELECT CSName FROM Win32_OperatingSystem

尝试一个像“愤怒的IP扫描仪”这样的IP扫描器工具,看看是否可以询问服务器的主机名。 我知道在愤怒有一个主机名列,我经常(但不是总是)看到它填充。