1 Вопрос: Powershell выводит данные CSV в несколько строк вместо одной строки

вопрос создан в Wed, May 8, 2019 12:00 AM

У меня есть CSV-файл с данными о некоторых пользователях и идентификаторах, и я должен добавить к каждой записи письмо, сформированное из их name.surname@domain. Хотя ему удается распечатать его в файл, когда я открываю файл, он отформатирован таким образом, что каждый из столбцов разделяется на запись.

$origin = Get-Content $file

$origin = foreach{ $line= $_.Split(",")

$line+","+line[0].ToLower()+"."+line[1].ToLower()+"@"+$domain

} | Set-Content $outputfile

Если файл содержит 1 запись, например

john,doe,1234

вывод файла должен быть

john,doe,1234,john.doe@mail.com

но вместо этого он печатает каждый атрибут в виде столбца

john
doe
1234
@
mail.com

Использую ли я неправильный тип печати или неправильный цикл?

    
- 2
  1. Используйте Import-Csv для чтения данных, если заголовок отсутствует, укажите с параметром -Header. Прочитайте Get-Help Импорт-Csv
    2019-05-08 16: 12: 23Z
  2. Размещенный вами код также недопустим, пропущены знаки $, а 2-я строка должна быть $origin | foreach{ $line= $_.Split(","). Также $line - это массив, который из-за разделения содержит 3 элемента [0..2 ], если вы выводите массив, элементы по умолчанию на sep. линий. Так должно быть $_+","+$line[0].ToLower()+"."+$line[1].ToLower()+"@"+$domain
    2019-05-08 16: 36: 33Z
1 ответ                              1                         

Файл .csv. Воспользуйтесь этим.

Import-Csv -Path './joe.csv' -Header fname, lname, empnum |
    Select-Object -Property *, @{Name='email';Expression={$_.fname + '.' + $_.lname + '@mail.com'}} |
    Export-Csv -Path './joe2.csv' -NoTypeInformation
    
0
2019-05-08 16: 22: 02Z
источник размещен Вот