如何将所有连接到网络的IP地址保存在文本文件中
How to save all ip addresses connected to the network in a text file
出于安全原因,我想在没有外包的情况下为员工创建一个警报软件。我找到了一种使用 msg 命令从 cmd 发送警报的方法,我没有测试这段代码,但我是从 Microsoft 站点生成的,如果有任何错误请告诉我
msg @allip.txt "test"
对于 IP 列表,我找到了使用 arp -a
使用 cmd 的解决方案,但我必须像这样清除文件中的额外信息,问题是如果我在文本中保留额外信息,代码不工作
Interface: 192.168.1.140 --- 0x3
Internet Address Physical Address Type
192.168.1.1 00-00-00-00-00-00 dynamic
192.168.1.61 00-00-00-00-00-00 dynamic
192.168.1.255 00-00-00-00-00-00 static
...
有没有办法只保存互联网地址table
要提取所有 缓存的 IP 地址 - 这是 arp.exe
/a
报告的内容 - 使用以下内容:
- 注意:根据链接文档判断,这些 缓存地址 与它们的“它们解析的以太网或令牌环物理地址”一起存储,并带有单独的 table为每个网络适配器维护,是手头计算机 在当前 OS 会话中主动与之交谈的 IP 地址 ,即 不与联网的整套计算机相同。
要扫描整个子网以获得可达 IP 地址,请考虑第三方功能,例如Ping-Subnet
。
((arp /a) -match '^\s+\d').ForEach({ (-split $_)[0] })
要保存到文件,说 ips.txt
,附加 > ips.txt
或 | Set-Content ips.txt
。
注:
在 Windows PowerShell 中,您将通过这些文件保存方法获得不同的字符编码 (UTF-16 LE ("Unicode" ) >
/ ANSI Set-Content
)
在 PowerShell (Core) 7+ 中,您将默认(一致)获得无 BOM 的 UTF-8 文件。
使用Set-Content
的-Encoding
参数明确控制编码。
说明:
-match
'^\s+\d'
过滤由 arp /a
输出的行数组,仅包括以 (^
) 开头的行,至少有一个 (+
) 空白字符。 (\
),后跟十进制数字 (\d
) - 这将输出行限制为显示缓存-table 条目的行。
.ForEach()
为每个匹配行执行脚本块 ({ ... }
)。
-split
的一元形式,即string splitting operator,将每个匹配行按空格分割成字段数组,索引[0]
returns 第一个这样的字段。
出于安全原因,我想在没有外包的情况下为员工创建一个警报软件。我找到了一种使用 msg 命令从 cmd 发送警报的方法,我没有测试这段代码,但我是从 Microsoft 站点生成的,如果有任何错误请告诉我
msg @allip.txt "test"
对于 IP 列表,我找到了使用 arp -a
使用 cmd 的解决方案,但我必须像这样清除文件中的额外信息,问题是如果我在文本中保留额外信息,代码不工作
Interface: 192.168.1.140 --- 0x3
Internet Address Physical Address Type
192.168.1.1 00-00-00-00-00-00 dynamic
192.168.1.61 00-00-00-00-00-00 dynamic
192.168.1.255 00-00-00-00-00-00 static
...
有没有办法只保存互联网地址table
要提取所有 缓存的 IP 地址 - 这是 arp.exe
/a
报告的内容 - 使用以下内容:
- 注意:根据链接文档判断,这些 缓存地址 与它们的“它们解析的以太网或令牌环物理地址”一起存储,并带有单独的 table为每个网络适配器维护,是手头计算机 在当前 OS 会话中主动与之交谈的 IP 地址 ,即 不与联网的整套计算机相同。
要扫描整个子网以获得可达 IP 地址,请考虑第三方功能,例如Ping-Subnet
。
((arp /a) -match '^\s+\d').ForEach({ (-split $_)[0] })
要保存到文件,说 ips.txt
,附加 > ips.txt
或 | Set-Content ips.txt
。
注:
在 Windows PowerShell 中,您将通过这些文件保存方法获得不同的字符编码 (UTF-16 LE ("Unicode" )
>
/ ANSISet-Content
)在 PowerShell (Core) 7+ 中,您将默认(一致)获得无 BOM 的 UTF-8 文件。
使用Set-Content
的-Encoding
参数明确控制编码。
说明:
-match
'^\s+\d'
过滤由arp /a
输出的行数组,仅包括以 (^
) 开头的行,至少有一个 (+
) 空白字符。 (\
),后跟十进制数字 (\d
) - 这将输出行限制为显示缓存-table 条目的行。.ForEach()
为每个匹配行执行脚本块 ({ ... }
)。-split
的一元形式,即string splitting operator,将每个匹配行按空格分割成字段数组,索引[0]
returns 第一个这样的字段。