如何获取远程计算机的MAC地址

我有具体的情况。 我想从远程计算机获取MAC地址,这不在域中。 我知道远程计算机的主机名和IP地址。 我的电脑的IP地址是192.168.2.40,远程电脑的IP是192.168.2.41。

我试过了:

arp -a <remote IP Address> No ARP entries found. nbtstat -n <remote hostname> Host not found. getmac /s <remote IP Address> ERROR: The RPC server is unavailable. 

是否有可能从命令行,PowerShell或其他东西获取远程系统的MAC地址? 哪些条件需要设置? 谢谢。

nmap将返回MAC地址以及任何你想知道的东西。

如果您有pipe理员访问机器,powershell和wmi在获得远程诊断方面都非常有用。 他们都在technet.microsoft.com有广泛的文档

编辑:这假定一个Windows机器,从它的外观,这可能不是。

您可以从WMI获取它,任何可以读取WMI的语言都可以访问它。 VBScript,JScript,Perl,Python和Powershell都可以用来实现它。

既然你问了Powershell,下面是一个来自http://www.neolisk.com/techblog/powershell-getmacaddressofanyremoteip的例子&#xFF1A;

 param ( $Computer , $Credential ) #to make it work without parameters if($Computer -eq $null) { $Computer = $env:COMPUTERNAME } #program logic $hostIp = [System.Net.Dns]::GetHostByName($Computer).AddressList[0].IpAddressToString if($Credential) { $Credential = Get-Credential $Credential $wmi = gwmi -Class Win32_NetworkAdapterConfiguration -Credential $Credential -ComputerName $Computer } else { $wmi = gwmi -Class Win32_NetworkAdapterConfiguration -ComputerName $Computer } return ($wmi | where { $_.IpAddress -eq $hostIp }).MACAddress 

MAC地址是以太网的东西,不是互联网的东西。 一台电脑甚至不需要一个MAC地址。 获取MAC地址的唯一方法是在与该计算机相同的局域网上获取一些计算机以告诉您。 而且你无法知道这是给你正确的信息。

如果你们两个在同一个以太局域网,你可以ping电脑,然后看你的ARP表。 否则,你将不得不问在同一Etherent /无线局域网的电脑。

是的。 最简单的方法应该是做一个ping,然后检查ARP表

如果你真的把事情做得清清楚楚,我build议你从Spiceworks( http://www.spiceworks.com )那里免费下载软件来设置upp的持续监控,并随时提供你的信息enivorenment。

我已经使用了它多年,它在局域网上很好用。

虽然把ocf sofwtare发送到远程站点确实存在一些问题,但还没有真正理解为什么,除此之外,我强烈推荐它。

如果你知道计算机的便利方式将是:

 $strComputer ="ComuterName" $colItems = Get-WmiObject -Class "Win32_NetworkAdapterConfiguration" -ComputerName $strComputer -Filter "IpEnabled = TRUE" ForEach ($objItem in $colItems) { write-host "IP Address: " $objItem.IpAddress[0] "Mac: " $objItem.MacAddress } 

更高级的脚本,可以通过IP或主机名接受任何机器:

 $device = "192.168.106.123" if ( $device | ? { $_ -match "[0-9].[0-9].[0-9].[0-9]" } ) { echo "Searching MAC by IP" $ip = $device } else { echo "Searching MAC by host" $ip = [System.Net.Dns]::GetHostByName($device).AddressList[0].IpAddressToString } $ping = ( new-object System.Net.NetworkInformation.Ping ).Send($ip); if($ping){ $mac = arp -a $ip; ( $mac | ? { $_ -match $ip } ) -match "([0-9A-F]{2}([:-][0-9A-F]{2}){5})" | out-null; if ( $matches ) { $matches[0]; } else { echo "MAC Not Found" } } 

MAC是OSI第2层 – 当它们之间存在任何第3层跳时,您不会直接获取它 – 为了安全起见,所有查询此类数据的协议都不应该被允许在LAN以外的任何地方使用。

虽然上面有点过于复杂,但如果在ping之后没有find条目,则需要在服务中启用路由和远程访问,但可能会被禁用。 然后得到一个命令提示符并发出一个arp -a来查看您的caching,使用arp -a <IP>作为该机器的mac地址。

你可以试试这个:

 nbtstat -A 192.168.2.41 

您将在(相当详细)生成的响应中获得远程mac地址。

“nmap -v -A [主机名/ IP地址]”可能是您的最佳select; 客户端的UNIX操作系统可能本机可用; 但nmap也可用于Windows客户端以及…