0

我正在寻找一种方法来将字符串中列出的所有 MX 记录检索到文本文件中。
到目前为止,我有一个脚本,它为我提供了一个我使用过的 HTML 输出:

$Records = Get-Content -Path "C:\NETESP\MXRecords\MXRecordsHTML.txt" | Select-String -SimpleMatch -Pattern "MX: "

这导致 $Records 包含以下字符串:

<DIV class="well transcript">&nbsp;&nbsp;0&nbsp;&nbsp;nsb.nic.uk&nbsp;&nbsp;156.154.101.3&nbsp;&nbsp;NON-AUTH&nbsp;&nbsp;Recieved 2 Referrals , 
rcode=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NS: ns.mainnameserver.com,NS: ns2.mainnameserver.com,&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;1&nbsp;&nbsp;ns2.
mainnameserver.com&nbsp;&nbsp;79.170.43.3&nbsp;&nbsp;AUTH&nbsp;&nbsp;Recieved 2 Answers , rcode=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MX: exchange
=engine01-20052-1.icritical.com/pref=10,MX: exchange=engine02-20052-2.icritical.com/pref=20,&nbsp;&nbsp;<BR><BR></DIV></DIV></DIV></SPAN><TD>mx: </TD>

有没有办法将 MX 记录和首选项值放入文本文件?根据运行的服务器,可能有多达 6 条 MX 记录。

4

1 回答 1

1

像这样修改你的Select-String

... | Select-String 'MX:\s*([^,]+)' -AllMatches | 
      Foreach {$_.Matches | Foreach {$_.Value}}

您需要([^,]+)在您的正则表达式中创建一个捕获组。这将允许您仅提取匹配文本更改的那部分。您还需要指定-AllMatches每行是否可以有多个 MX 记录。之后,您将要枚举每个Matches并吐出我们的值(这将是捕获组文本)。

顺便说一句,此捕获组假定每个 MX 记录以逗号结尾。如果不是这种情况,您将需要找到适当的正则表达式来仅从周围的文本中捕获 MX 记录。

于 2012-09-13T14:59:09.407 回答