In yesterdays post I used a series of split operations to parse the strings produced by ipconfig /displaydns
Regular expressions should give a more power full way to perform this task. Not being a big fan of regular expressions I tend not to use them but for the sake of experimentation I thought I’d try and figure out a set of regex to use.
This is as far as I’ve got
$props = [ordered]@{
RecordName = ""
RecordType = ""
Section = ""
TimeToLive = 0
DataLength = 0
Data = ""
}
$recs = @()
$cache = ipconfig /displaydns
for($i=0; $i -le ($cache.Count -1); $i++) {
if ($cache[$i] -like ‘*Record Name*’){
$rec = New-Object -TypeName psobject -Property $props
$rec.RecordName = $cache[$i] -replace "(\s*\w*){2}(\s\.){5}(\s\:\s)", ""
$rec.Section = $cache[$i+4] -replace "\s*\w*(\s\.){7}(\s\:\s)", ""
$rec.TimeToLive = $cache[$i+2] -replace "(\s*\w*){3}\s(\s\.){4}(\s\:\s)", ""
$rec.DataLength = $cache[$i+3] -replace "(\s*\w*){2}(\s\.){5}(\s\:\s)", ""
$irec = ($cache[$i+5] -split ": ")
$rec.RecordType = ($irec[0].TrimStart() -split ‘ ‘)[0]
$rec.Data = $irec[1]
$recs += $rec
}
else {
continue
}
}
$recs | Format-Table –AutoSize
I still need to work out how to process the data and record type using regular expressions