У меня возникли проблемы с поиском ответа на этот вопрос. Поэтому я решил поделиться тем, что я создал, с массами. Что я пытался сделать, так это запустить команду ARP -a и зафиксировать результаты, чтобы использовать их в файле TXT для чего-то другого позже. После долгих поисков я смог скомпилировать это.
Я включил примечания в код, чтобы помочь менее опытным пользователям понять, что делает каждый раздел.
Но этот код делает эти компоненты
- Установите выходной путь (при необходимости)
- Ищет текущие IP-адреса машин
- Разбивает схему IP для размещения только первых 3 октетов. * Там есть строка кода #, если вы используете машину с несколькими сетевыми картами или IP-адресами, чтобы вы могли фильтровать только один необходимый IF.
- Захватывает таблицу ARP. *У меня есть 2 версии захвата ARP. Первый — ЕСЛИ вы собираетесь фильтровать по схеме IP-адресов устройств. Это поможет удалить записи DNS и замыкания на себя. Во-вторых, если вы хотите ВСЕ.
- Выводит результаты IP-адресов в текстовый файл.
В моем случае я использую его только для фильтрации IP-адресов. Он может понадобиться вам для других целей. Хорошей новостью является то, что можно легко изменить части, чтобы вы могли больше фильтровать в соответствии с вашими потребностями.
#Captures ARP Table then Displays ALL IPs that match the local computers IP Address
#Set the file you wish for the data to Output to
$OutputPath = "C:\Temp\Test.txt"
#Captures the devices IP Scheme and break it down, remove the Last Octet from the string
#This section is only used IF you are trying to filter the ARP by the local network the device is on.
[string[]]$ComputerName = $env:computername
$OrgSettings = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $ComputerName -EA Stop | ? { $_.IPEnabled }
$ip = $OrgSettings.IPAddress[0]
#IF (!($ip[1] -eq $null)) {$ip = $ip[0]}
$ip = (([ipaddress] $ip).GetAddressBytes()[0..2] -join ".") + "."
$ip = $ip.TrimEnd(".")
#Searches the ARP table for IPs that match the scheme and parses out the data into an Array (It removed the Devices IP from the list.)
Remove-Variable macarray
$macarray = @()
#(arp -a) -match $ip | Foreach{ #Use if needed for filtering results
(arp -a) | Foreach{ #Use this IF no filtering needed
$obj = New-Object PSObject -Property @{
IP = ($_ -split "\s+")[1]
MAC = ($_ -split "\s+")[2]
}
IF (!($obj.MAC -eq "---" -or $obj.MAC -eq "Address" -or $obj.MAC -eq $null -or $obj.MAC -eq "ff-ff-ff-ff-ff-ff")) {$macarray += $obj}
}
#Outputting the IP Addresses captured.
$macarray | Select -ExpandProperty "IP" | Out-file -FilePath $OutputPath -Force
Get-NetNeighbor
. - person BenH   schedule 25.10.2016