52 lines
1.1 KiB
PowerShell
52 lines
1.1 KiB
PowerShell
|
|
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
|
||
|
|
}
|