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また、1行に複数のMXレコードを含めることができるかどうかも指定する必要があります。その後、それぞれを列挙しMatches、それらの値(キャプチャグループのテキストになります)を吐き出します。

ところで、このキャプチャグループは、各MXレコードがコンマで終わることを前提としています。そうでない場合は、周囲のテキストからMXレコードだけをキャプチャするための適切な正規表現を見つける必要があります。

于 2012-09-13T14:59:09.407 に答える