PS-Commands/Scripts/Get-ARP.psm1

52 lines
1.1 KiB
PowerShell
Raw Permalink Normal View History

2023-10-14 12:06:13 +03:00
function Get-ARP {
<#
.SYNOPSIS
Module using arp.exe for created object powershell and search mac-address
For proxy use Invoke-Command via WinRM
.DESCRIPTION
Example:
Get-MACProxy # default localhost
Get-MACProxy -proxy dc-01 # remote get arp table
Get-MACProxy -proxy dc-01 -search server-01 # search mac-address server on proxy-server
.LINK
https://github.com/Lifailon
#>
Param (
$proxy,
$search
)
if (!$proxy) {
$arp = arp -a
}
if ($proxy) {
$arp = icm $proxy {arp -a}
}
$mac = $arp[3..260]
$mac = $mac -replace "^\s\s"
$mac = $mac -replace "\s{1,50}"," "
$mac_coll = New-Object System.Collections.Generic.List[System.Object]
foreach ($m in $mac) {
$smac = $m -split " "
$mac_coll.Add([PSCustomObject]@{
IP = $smac[0];
MAC = $smac[1];
Type = $smac[2]
})
}
if ($search) {
if ($search -NotMatch "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}") {
#$ns = nslookup $search
#$ns = $ns[-2]
#$global:ns = $ns -replace "Address:\s{1,10}"
$rdns = Resolve-DnsName $search -ErrorAction Ignore
$ns = $rdns.IPAddress
if ($ns -eq $null) {
return
}
} else {
$ns = $search
}
$mac_coll = $mac_coll | ? ip -Match $ns
}
$mac_coll
}