Преобразуйте содержимое файла в хеш-таблицу, создайте пользовательский объект из этой хеш-таблицы, затем экспортируйте в CSV с пользовательским разделителем.
$ht = Get-Content 'input.txt' |
Out-String |
ConvertFrom-StringData
New-Object -Type PSObject -Property $ht |
Export-Csv 'output.csv' -Delimiter ';' -NoType
В PowerShell v3 и новее вы можете упростить код,замена Get-Content | Out-String
на Get-Content -Raw
и использование ускорителя типа [PSCustomObject]
вместо New-Object
.
$ht = Get-Content 'input.txt' -Raw | ConvertFrom-StringData
[PSCustomObject]$ht |
Export-Csv 'output.csv' -Delimiter ';' -NoType
Если ваши входные данные содержат одни и те же клавиши несколько раз, вам нужно разделить данныена куски и преобразуем каждый из них в объект по отдельности:
$list = (Get-Content 'input.txt' | Out-String) -split '\r?\n(?=GUID)' |
ForEach-Object {
$ht = $_ | ConvertFrom-StringData
New-Object -Type PSObject -Property $ht
}
$list | Export-Csv 'output.csv' -Delimiter ';' -NoType
\r?\n(?=GUID)
- это регулярное выражение, которое использует положительное предпросмотровое утверждение ((?=...)
) для разделения строки на новые строки, за которыми следуетстрока "GUID".