regex - 正则表达式从 ipconfig /all 中提取 DNS 服务器
问题描述
我四处寻找解决方案,但还没有找到任何好的解决方案。我需要从 powershell 脚本中命令 ipconfig /all 的输出中提取 DNS 服务器。提取此信息的最佳方法是什么?
例子:
Lease Expires . . . . . . . . . . : Monday, August 6, 2018 12:46:13 PM
Default Gateway . . . . . . . . . : fe80::200:5eff:fe00:204%4
10.161.180.1
DHCP Server . . . . . . . . . . . : 10.221.228.17
DHCPv6 IAID . . . . . . . . . . . : 115363651
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-22-DE-E5-35-E0-4F-43-29-6E-21
DNS Servers . . . . . . . . . . . : 10.50.50.50
10.50.10.50
NetBIOS over Tcpip. . . . . . . . : Enabled
我需要选择 2 个 IP 的 10.50.50.50 和 10.50.10.50。
解决方案
您可以使用这样的正则表达式:
"DNS Servers[ .]+:\s+(?<DNS1>\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)\s*(?<DNS2>\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)?"
本文有几个使用 PowerShell 中的正则表达式的示例: https ://kevinmarquette.github.io/2017-07-31-Powershell-regex-regular-expression/
以下是它可能会如何解决您的问题:
$result = ipconfig /all
$groups = [regex]::matches($result, "DNS Servers[ .]+:\s+(?<DNS1>\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)\s*(?<DNS2>\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)?")[0].Groups
要获得第一个结果 (DNS1),请使用$groups[1].Value
and 对于第二个 (DNS2),请使用$groups[2].Value
. 结果将如下所示:
$groups[1].Value -> 10.50.50.50
$groups[2].Value -> 10.50.10.50
推荐阅读
- c# - 在 Xamarin Forms Shell 中隐藏 TabBar
- tensorflow - 使用 MobileNet 和 Faster RCNN 检测小物体
- c# - 如何在asp.net core razor pages 2.2中设置日期格式和文化
- node.js - nods js mvc 框架与 react js 和 mongodb 一起使用
- python - put() 缺少 1 个必需的位置参数:'pk'
- php - 你能检查我的代码吗?我想使用 for 循环在列表中显示数据库中的数据
- sql - 乘以其他表中最新的先前值
- arrays - Presto - 我如何比较两个数组以获得最大匹配值计数
- plot - gnuplot 中是否可以使用 cfc 过滤器?
- node.js - 如何更改 node-Sqlite3 默认选项