2012-09-13 53 views
0

我正在尋找一種方法來檢索字符串中列出的所有MX記錄到文本文件中。
到目前爲止,我已經有了一個腳本,給了我一個HTML輸出從我使用:如何在PowerShell中將字符串中的多個值檢索到數組中

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

這導致含有的字符串$記錄:

<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記錄。

回答

1

修改您Select-String像這樣:

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

您需要在您的正則表達式來創建捕獲組([^,]+)。這將允許您提取匹配的文本alter的那部分。如果每行可能有多個MX記錄,則還需要指定-AllMatches。之後,你會想枚舉每個Matches並吐出我們的價值(這將是捕獲組文本)。

順便說一下,此捕獲組假定每個MX記錄都以逗號結尾。如果不是這種情況,您需要找到合適的正則表達式來捕獲周圍文本中的MX記錄。

相關問題