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, но и другие случайные устройства в сети.