Я бы предпочел использовать строковые операции, но регулярное выражение обычно обычно быстрее. [ ухмылка ]
Предполагается, что $InStuff
содержит две строки, которые вы опубликовали, это будет захватывать части, которые вы, кажется, хотите ...
$Instuff[0] -match '^(?<TimeStamp>.+?) [AM|PM].+[Rcv|Snd] (?<IP>.+?)\s{2,}.+] (?<RecordType>.+?)\s{2,}\(\d+\)(?<Domain>.+?)\(\d{1,}\)(?<TLD>.+?)\(\d{1,}\)$'
тогда автоматическая переменная $Matches
будет иметь различные именованные совпадения, готовые к использованию. вот вывод для 1-й строки, которую вы разместили ...
Name Value
---- -----
Domain offeringsmislead
TLD com
IP 69.160.33.71
TimeStamp 25/10/2018 16:48:23
RecordType A
0 25/10/2018 16:48:23 PM 0710 [*...snip...*]
Вы можете обратиться к этим совпадениям через $Matches.Domain
или любое другое имя свойства.
с момента запроса, вот полная версия кода с надписью "сохранить в файл" ... [ ухмылка ]
# fake reading in a file
# in real life, use Get-Content
$InStuff = @'
25/10/2018 16:48:23 PM 0710 PACKET 0000000028FB94C0 UDP Rcv 69.160.33.71 8857 Q [0080 NOERROR] A (16)offeringsmislead(3)com(0)
25/10/2018 16:48:23 AM 0714 PACKET 000000002CC599A0 UDP Snd 8.8.8.8 3434 Q [1001 D NOERROR] A (10)controltag(3)net(0)
'@ -split [environment]::NewLine
$NamedRegex = '^(?<TimeStamp>.+?) [AM|PM].+[Rcv|Snd] (?<IP>.+?)\s{2,}.+] (?<RecordType>.+?)\s{2,}\(\d+\)(?<Domain>.+?)\(\d{1,}\)(?<TLD>.+?)\(\d{1,}\)$'
$CleanedFileName = "$env:TEMP\CleanedVersion.log"
$Results = foreach ($IS_Item in $InStuff)
{
# supress unwanted False/True output
$Null = $IS_Item -match $NamedRegex
# join the named matches with a single space
# plus, join the Domain & TLD with a dot
# if you want things padded to a constant colum width, use `.PadLeft()`
$Matches.TimeStamp, $Matches.IP, $Matches.RecordType, ($Matches.Domain, $Matches.TLD -join '.') -join ' '
}
# on screen output
$Results
# send to text file
$Results |
Set-Content -LiteralPath $CleanedFileName
вывод на экран ...
25/10/2018 16:48:23 69.160.33.71 A offeringsmislead.com
25/10/2018 16:48:23 8.8.8.8 A controltag.net
содержимое "cleanedversion.log" ...
25/10/2018 16:48:23 69.160.33.71 A offeringsmislead.com
25/10/2018 16:48:23 8.8.8.8 A controltag.net