Получение MAC из IP возвращает IP вне подсети

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);

Если я выполняю это, я получаю следующее:

192.168.56.1

Я не уверен, как я получаю этот IP, а не MAC.

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

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

1 ответ

  1. Зафиксированный. Глупый я. Я проходил неправильно.

    $device = "192.168.2.231";
    Get-MacAddress($device);