正则表达式从ipconfig / all中提取DNS服务器

时间:2018-07-31 01:13:56

标签: regex powershell ipconfig

我一直在寻找解决方案,但是还没有发现任何好的方法。我需要在powershell脚本中从命令ipconfig / all的输出中提取DNS服务器。提取此信息的最佳方法是什么?

示例:

<html>
  <body>
    no space between here &gt;<svg height="100" width="100"><circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" /></svg>&lt; and here.
  </body>
  
</html>

我需要选择2个IP的10.50.50.50和10.50.10.50。

1 个答案:

答案 0 :(得分:1)

您可以像这样使用正则表达式:

"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,第二个(DNS2)请使用$groups[2].Value。结果如下:

$groups[1].Value -> 10.50.50.50
$groups[2].Value -> 10.50.10.50