Если ExportList.txt
- это просто дамп из зоны DNS-сервера или DNS-сервера и он разделен, вы можете сделать следующее:
Get-Content \\fzzzzz\rrrrr\ttttt\DNSExport\ExportList.txt |
Where-Object { $_ -match 'Alias \(CNAME\)' } |
ConvertFrom-Csv -Delimiter "`t" -Header 'Alias','Type','Server','Timestamp' |
Select-Object Alias,Type,Server |
Export-Csv output.csv -NoType
Предполагается, что вашим разделителем является символ табуляции. Вы можете изменить разделитель по своему усмотрению.
Если ваш пример текстового файла называется cname.txt
без правильных разделителей, я бы сделал следующее:
((Get-Content cname.txt).Trim() |
Select-Object -Skip 1) -replace "(?<!Alias)\s+(?!\(CNAME\))",',' |
ConvertFrom-Csv -Header 'Server','Type','Alias','Timestamp' |
Select-Object Server,Alias |
Export-Csv output.csv -NoType
Объяснение:
Trim()
удаляет начальные и конечные пробелы (в данном случае для каждой строки). Select-Object -Skip 1
пропускает первую строку файла,Первая строка будет строкой server
и alias
. (?<!Alias)\s+(?!\(CNAME\))
соответствует всем последовательным пробелам, которые не находятся между Alias
и (CNAME)
. -replace
заменяет согласованный пробел на ,
. ConvertFrom-Csv
просто для форматирования данных, разделенных запятыми, с именованными заголовками столбцов. Select-Object Server,Alias
просто выбирает Server
и Alias
данные. Вы можете полностью удалить эту строку, если хотите получить все данные.