使用 powershell 获取家庭网络上的设备名称及其 IP 地址

2024-03-31

这个问题是由于尝试管理我的家庭 WiFi 网络而产生的。我一直在尝试 get-netipaddress、ipconfig 和 nslookup.exe 等命令。

以下命令有点引导我到某个地方,但它没有我正在寻找的信息。

Get-NetIPAddress | Format-Table

我希望能够获得家庭网络上所有设备的列表。包括设备 IP 地址以及该设备的某种名称。前面的命令给出了一个 ip 地址,但它看起来更像是一个 mac 地址?任何帮助表示赞赏!


我将批处理工具转换为 Powershell 脚本。
它是命令行工具 ping.exe、arp.exe 和 nslookup.exe 的包装器。

  • 为了获得良好的结果,所有设备都应打开并连接。
  • 要将所有可能的 DeviceIP 放入计算机的 arp 缓存中,
    预先对假定的 /24 子网中的所有 IP 执行 ping 操作。
  • Arp.exe -a将返回 IP 和 MAC。
  • Nslookup.exe 用于查找从任何本地域后缀中剥离的名称。

编辑 var $SubNet 以适合您的环境。

## Q:\Test\2017\01\21\SO_41785413.ps1
$FileOut = ".\Computers.csv"
## Ping subnet
$Subnet = "192.168.xyz."
1..254|ForEach-Object{
    Start-Process -WindowStyle Hidden ping.exe -Argumentlist "-n 1 -l 0 -f -i 2 -w 1 -4 $SubNet$_"
}
$Computers =(arp.exe -a | Select-String "$SubNet.*dynam") -replace ' +',','|
  ConvertFrom-Csv -Header Computername,IPv4,MAC,x,Vendor|
                   Select Computername,IPv4,MAC

ForEach ($Computer in $Computers){
  nslookup $Computer.IPv4|Select-String -Pattern "^Name:\s+([^\.]+).*$"|
    ForEach-Object{
      $Computer.Computername = $_.Matches.Groups[1].Value
    }
}
$Computers
$Computers | Export-Csv $FileOut -NotypeInformation
#$Computers | Out-Gridview

样本输出

Computername     IPv4            MAC              
------------     ----            ---              
Zyxel-24G-Switch 192.168.xyz.1   fc-f5-28-fc-f5-28
TMDat1-Plex      192.168.xyz.60  02-7c-2c-02-7c-2c
HPn54L           192.168.xyz.91  c8-cb-b8-c8-cb-b8
Medion-Tablett   192.168.xyz.114 08-d8-33-08-d8-33
dLAN-LiveCam     192.168.xyz.115 bc-f2-af-bc-f2-af
McMini           192.168.xyz.128 40-6c-8f-40-6c-8f
HPojPro8500plus  192.168.xyz.144 d4-85-64-d4-85-64
Amazon-Kindle2   192.168.xyz.152 10-ae-60-10-ae-60
SG-S4-active     192.168.xyz.162 40-0e-85-40-0e-85
TMDat1           192.168.xyz.167 28-92-4a-28-92-4a
HP-G1610         192.168.xyz.176 10-60-4b-10-60-4b
NetStream4Sat    192.168.xyz.191 00-0c-6c-00-0c-6c
Netio230b        192.168.xyz.230 24-a4-2c-24-a4-2c
fritz            192.168.xyz.250 bc-05-43-bc-05-43
HomeMatic-CCU    192.168.xyz.254 00-1a-22-00-1a-22

我自己的扩展版本附加了从 Mac 的前 6 个十六进制数字中提取的供应商,但需要非常缓慢地下载 Oui.txt
"http://standards-oui.ieee.org/oui.txt http://standards-oui.ieee.org/oui.txt"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 powershell 获取家庭网络上的设备名称及其 IP 地址 的相关文章

随机推荐

  • 通过读取初始 .DBF 字节可以采用哪种标头格式?

    关于 DBF文件的第一个字节以及如何检测所使用的xbase版本 即文件其余部分的格式 我可以编译的最全面的列表是 Byte 0 x xxx x 001 0x 1 not used 0 000 0 010 0x02 FoxBASE 0 000
  • Ember.js - jQuery-masonry + 无限滚动

    我正在尝试在我的 ember 项目中实现无限滚动和砌体工作 砖石 砖块 是带有文字和图像的柱子 目前 我可以在页面初始加载时显示第一页并应用砌体 不过 我仍然需要执行 setTimeout 试图找出如何摆脱它 我还有基本的无限滚动代码 现在
  • 使用 Web 部署发布 ASP.NET MVC2 站点

    我目前使用 Web 部署 http learn iis net page aspx 346 web deploy http learn iis net page aspx 346 web deploy 发布我的 MVC2 应用程序 它曾经工
  • file_get_contents() 修改后的 HTTP 标头返回垃圾 html 输出

    以下代码用于使用 PHP 的 SIMPLETHTMLDOM 解析器提取 html include simple html dom php context stream context create array http gt array m
  • 在SAX解析期间确定根元素

    我正在使用 SAX 来解析 XML 文件 假设我希望我的应用程序only处理带有根元素 animalList 的 XML 文件 如果根节点是其他节点 SAX 解析器应该终止解析 使用 DOM 你可以这样做 Element rootEleme
  • 在 Flutter 中使用 After Effects 文件

    我知道如何导出Rive在 Flutter 应用程序中使用的 Flare 文件 但我怎样才能import Adobe 后遗症文件到 Rive 我知道可以这样做Lottie但我无法弄清楚如何准确地做到这一点 您可以轻松导入 bodymovin
  • 如何使用 Jest 和 vue/test-utils 测试输入文件

    我想使用 Jest 和 vue test utils 测试文件上传器组件 我有这个 describe show progress bar of uploading file gt const wrapper mount FileUpload
  • 如何在 lldb 中创建和使用临时 NSRange?

    NSRange 只是一个 C 结构体 我想在 Xcode 的 lldb 中的断点处创建一个临时的 专门用于 NSArray 方法objectAtIndex inRange 这是行不通的 lldb expr NSRange tmpRange
  • 高效更新 Bokeh 中的图像图以实现交互式可视化

    我正在尝试使用 Bokeh 创建多维数组的不同切片的平滑交互式可视化 切片中的数据根据 用户交互而变化 因此每秒必须更新几次 我编写了一个 Bokeh 应用程序 其中包含几个小图像图 64x64 值 来显示切片的内容 以及在用户与应用程序交
  • 根据年份合并 data.frames 并填写缺失值

    我有两个 data frames 我想将它们合并在一起 第一个是 datess lt seq as Date 2005 01 01 as Date 2009 12 31 days sample lt data frame matrix nc
  • JavaFX:如何在不关注主窗口的情况下关闭子窗口

    我试图在一定时间后以编程方式关闭子窗口 这个子窗口的initOwner是与主舞台一起设置的 但是关闭这个子窗口后 主窗口就会获得焦点 有什么方法可以在不关注主窗口的情况下关闭子窗口 以编程方式 下面是我的问题的快速演示 我尝试了所有可能的方
  • OSX 上“没有名为 _scproxy 的模块”

    我使用的是预装 python 2 6 的 OSX 10 6 并且想通过 easy install 或 setup py 在下载的包中 安装 python 包 就我而言 我正在尝试安装 MySQLdb 在这两种情况下 我都会得到一个堆栈跟踪
  • 在处理其他事情时如何将一堆未提交的更改放在一边

    如果我有一堆未提交的更改 并且想在处理其他事情时将其放在一边 然后稍后 例如几天后 返回并继续工作 完成此任务最简单的工作流程是什么 到目前为止我只体验过 Mercurial 的基本功能 我通常的方法是使用克隆创建一个新分支 但可能有更好的
  • 自动布局问题 Xcode 8 [_SwiftValue nsli_superitem]

    将我的代码转换为 Swift 3 我发现了一个奇怪的问题 现在 2016 年 9 月 15 日 Xcode 8 公共版本 已经发布 转换代码后 我的应用程序崩溃了 没有明显的原因 自动布局有问题 日志显示如下 SwiftValue nsli
  • Android,在库项目中提供应用程序特定常量的最佳方式?

    我正在为许多 Android 应用程序创建一个库项目 这些应用程序都具有一些我希望包含在库项目中的通用功能 但库项目功能需要使用特定于应用程序的常量 所以我正在寻找一种方法来为库函数提供常量名称并允许每个应用程序定义它们 特定应用程序常量的
  • data.table 中的 Between 与 inrange

    In R s data table 什么时候应该选择 between and inrange 用于子集化操作 我已阅读帮助页面 between我仍然对这些差异感到摸不着头脑 library data table X data table a
  • 屏幕阅读器何时应该可以使用“隐藏”元素(为了可访问性,a11y)?

    我听到建议 hidden类不作为 hidden display none 但将其宽度和高度设置为 1 并使用剪切等 使元素看起来仍然存在于屏幕上 但内容不可见 但是 当我们使用 JavaScript 隐藏某些内容时 该元素的目的就已经完成
  • 查找 JUnit TestCase 中测试方法的数量

    有没有办法知道测试用例中测试方法的数量 我想做的是有一个测试用例来测试几种场景 对于所有这些我只会执行一次 data setUp 同样 我想在所有测试方法结束时进行一次清理 tearDown 我当前使用的方法是维护一个计数器来记录文件中存在
  • Angular 2 - 如何在组件中包含 javascript?

    我对 Angular 完全陌生 直接开始使用 Angular 2 Angular 的一大优点是我可以模块化网页的每个功能 组件有自己的 html 和样式表 但是他们自己的 javascript 文件呢 我怎样才能包含它自己的特定 javas
  • 使用 powershell 获取家庭网络上的设备名称及其 IP 地址

    这个问题是由于尝试管理我的家庭 WiFi 网络而产生的 我一直在尝试 get netipaddress ipconfig 和 nslookup exe 等命令 以下命令有点引导我到某个地方 但它没有我正在寻找的信息 Get NetIPAdd