2016-05-26 2 views
0
function Get-MacAddress { 
    param([string]$device= $(throw "Please specify device")) 
    if ($device | ? { $_ -match "[0-9].[0-9].[0-9].[0-9]" }) 
    { 
     #"Searching by IP Address" 
     $ip = $device 
    } else { 
     #"Searching by Host Name" 
     $ip = [System.Net.Dns]::GetHostByName($device).AddressList[0].IpAddressToString 
    } 
    arp -d; # purge arp cache 
    $ping = (new-object System.Net.NetworkInformation.Ping).Send($ip); 
    $mac = arp -a; 
    if($ping) 
    { 
     ($mac | ? { $_ -match $ip }) -match "([0-9A-F]{2}([:-][0-9A-F]{2}){5})" | out-null; 
     if ($matches) { 
      $matches[0]; 
     } else { 
      "Not Found" 
     } 
    } 
} 

Get-MacAddress(192.168.2.231); 

Если я бегу, что я получаю следующее:Получение MAC от IP возвращает IP за пределами подсети

192.168.56.1 

Я не знаю, как я получаю, что IP-адрес, а не MAC.

Что мне нужно сделать, это получить МАС в IP-адресе, чтобы, когда я могу отсканировать для IP-адресов, я могу вытащить конкретные IP-адреса, которые имеют определенный MAC.

Это не машины Windows, но и другие случайные устройства в сети.

ответ

0

Fixed. Дурак я. Я ошибался.

$device = "192.168.2.231"; 
Get-MacAddress($device); 
Смежные вопросы