Импорт в CSV и экспорт в текстовый файл - PullRequest
1 голос
/ 25 марта 2020

Я пытался исследовать это и пытаюсь сделать что-то, что, я не уверен, возможно в Powershell. У меня есть CSV, как это с включенным заголовком:

Field1,Field2,Field3

Field1aaa,abc,rst

Field2bbb,ghi,xyz

В конце я хочу взять CSV и экспортировать в текстовый файл в указанном формате c. И это должно быть отформатировано таким образом для программы, с которой я работаю. Это что-то вроде JSON файла, но не совсем. Я пытаюсь создать необходимый блок текста для каждой строки CSV. Вот что я буквально пытаюсь получить в выходном текстовом файле

   Fieldaaa {
       field2<abc>
       field3<rst>
   }
   Field2bbb {
       field2<ghi>
       field3<xyz>

Представьте себе поле 1 как заголовок для каждой группы, как я перечислил выше. Я выполнил загрузку в CSV:

$userobjects = Import-CSV C:\temp\testcsv2.csv. 

Но тогда я не знаю, как это сделать отсюда. И добавить, что вывод текста, который я пытаюсь добавить, это клавиши табуляции. Я полагаю, что я мог бы сделать это, вставив в \ t, как только я пойму, как проанализировать этот CSV и экспортировать в текст. И я могу использовать Powershell 5.1, так как я работаю с Server 2016 и средой Windows 10 с этой версией. Пожалуйста, дайте мне знать, если я могу уточнить что-нибудь еще.

1 Ответ

2 голосов
/ 25 марта 2020

Вам просто нужно выполнить следующие шаги:

  1. получить контент (вы уже сделали это, и он уже находится в хорошем объекте для использования)
  2. Итерировать вокруг каждого добавьте строку и добавьте некоторое форматированное значение к выходной строке
  3. запишите эту выходную строку в ваш файл

Вот один из способов сделать это:

$outString = ""
$userobjects = Import-CSV C:\test\test.csv

foreach ($object in $userobjects) {
    $outString = @"
$outString

$($object.Field1) {
    field2<$($object.Field2)>
    field3<$($object.Field3)>
}    
"@
}

Set-Content C:\test\out.txt $outString

Или, возможно, более PowerShelly - это

Import-Csv C:\test\test.csv | ForEach-Object { 
    Write-Output @"
$($_.Field1) {
    field2<$($_.Field2)>
    field3<$($_.Field3)>
}
"@ } > c:\test\out.txt

Если вы еще этого не знаете, я могу порекомендовать проверить ss64 для примеров powershell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...