Get-NetNeighbor 是什么
Get-NetNeighbor 是 PowerShell 版的邻居表(ARP 表)查询命令,把同链路设备的 IP 与 MAC 对应关系以对象形式列出来,还可以按状态过滤。相比 arp -a 的纯文本输出,它的结果能直接接 Where-Object 做筛选和计数,排查「同网段设备不通」「改过网关仍走旧 MAC」这类问题时效率高得多。
基本信息
| 适用平台 | Windows 8 / Server 2012 以上 PowerShell |
|---|---|
| 查询全部 | Get-NetNeighbor |
| 按地址查 | Get-NetNeighbor -IPAddress 10.0.0.1 |
| 按状态查 | -State Reachable / Permanent |
| 配套命令 | Remove-NetNeighbor 清理、Set-NetNeighbor 改绑定 |
典型使用场景
- 确认某个 IP 对应的 MAC,核对交换机端口下挂的是哪台设备
- 清理错误邻居项,解决改过网关后仍走旧 MAC 的问题
- 筛出 Reachable 状态的条目,快速看当前活跃的同链路设备
- 配合 Get-NetIPConfiguration 定位同网段通信异常的网卡
- 在虚拟机或容器环境里按网卡过滤,排除大量冗余条目干扰
- 发现同一 IP 出现多个 MAC 时排查地址冲突
- 资产盘点时导出 IP 与 MAC 对照表,交给网管核对交换机学习记录
常用示例
常用示例
Get-NetNeighbor -AddressFamily IPv4 | Where-Object State -eq Reachable # 只看活跃条目
Get-NetNeighbor -IPAddress 10.0.0.1 | Select-Object IPAddress, LinkLayerAddress, State
arp -a # 传统命令对照
Remove-NetNeighbor -IPAddress 10.0.0.1 -Confirm:$false # 清理单条
# 静态绑定(谨慎,改错会造成误路由):
New-NetNeighbor -IPAddress 10.0.0.9 -LinkLayerAddress 00-11-22-33-44-55 -State Permanent输出字段读法
| 字段 | 含义 | 正常与异常 |
|---|---|---|
| IPAddress | 邻居的 IP 地址 | 通常是同网段地址或网关 |
| LinkLayerAddress | 对应的 MAC 地址 | 全 0 或来源不明需警惕 |
| State | Reachable/Stale/Permanent | Stale 属正常待验证状态 |
| InterfaceAlias | 条目所属网卡 | 多网卡机器必须确认是哪张 |
State 为 Stale 只表示条目需要重新验证,不代表故障;实际通信时会自动刷新为 Reachable,判断时要结合最近的通信情况,而不是单看状态字段。
虚拟网卡、WSL 与容器网络会产生大量邻居条目,直接看全表很容易迷失方向;先按 InterfaceAlias 或地址段过滤,再看具体映射关系。条目由系统按需老化清理,不需要手工维护,除非确实存在配错后长期生效的静态项。