2014-08-27 6 views
2

Я извлекаю информацию из активного каталога, но когда я пытаюсь ее экспортировать с Export-CSV, есть некоторые проблемы с возвратом каретки. Он запускает новую строку в CSV-файле для каждого найденного возврата, в то время как он должен оставаться на текущей строке.Возврат каретки форматирования экспорта-CSV

$User = Get-ADUser Bob -Properties * 
Display name : Bob Smith 
Notes   : Line 1 
        Line 2 
        Line 3 
E-mail   : [email protected] 

$User | Export-CSV 'C:\file.csv' 
Display name, Notes, E-mail 
Bob Smith, Line 1 
Line 2 
Line 3 
[email protected] 

Как я могу получить следующий выход?

$User | Export-CSV 'C:\file.csv' 
Display name, Notes, E-mail 
Bob Smith, Line 1 Line 2 Line 3, [email protected] 

Я пробовал с кодировкой, другими разделителями, .. Не могу понять это.

Решение

$User | Select 'Display Name', @{l='Notes';e={$_.Notes -replace "`n"," "}}, E-mail | Export-Csv 'C:\file.csv' -NoTypeInformation -Delimiter ';' 

ответ

2

Если у вас возникли проблемы с вставленным CR/LF с определенным полем, вы всегда можете выполнить -join в Notes в выражении оператора Select. Кое-что вроде:

$User | Select DisplayName, @{l='Notes';e={$_.Notes -join ", "}}, Email | Export-Csv 'C:\files.csv' 

Это будет выдавать желаемый результат.

Если у вас возникла проблема с несколькими полями, она становится немного сложнее, как я ее разрешаю (путем воспроизведения объекта как настраиваемого объекта, воссоздающего все поля и обработки их значений с помощью -join или заменить «` n »на«, »)

+0

Спасибо за совет, его отлично работал :) Я использовал метод '-replace', как вы предложили. OP обновляется с помощью ** решения **. – DarkLite1

0

В результате вы получите schould быть правильным, потому что это seperatet от "". Если вы импортируете csv с помощью «Import-Csv», вы получите правильные данные. Проблема заключается в свойстве «Примечания». Есть разрывы строк. Исключить примечания руды заменить `` r`n (разрыв строки) с "$ null".

0

Действительно, старая нить, но после обширного поиска в Google не могла найти ответа, но сама наткнулась на правильный ответ и решила поделиться. Проблема заключалась в том, что выход CSV имел разрыв строки.

$resultti = $result.computername -join " " | Out-String

$resultti | Export-Csv -Path $outfile -Delimiter ";" -NoTypeInformation -Encoding UTF8

И из-Put CSV выглядел как "-character всегда на следующей строке:

"Имя"," E-mail ";" SamAccountName "" Рабочие станции»

"Пит", "[email protected]"; "Pete", "W7DT1335 W7LT1812

"

"Энн"; "[email protected]"; "Аннеы"; "W7DT13565 W7LT1612

"

"Антон"; "[email protected]"; "антон"; "W7DT1345 W7LT1752

"

Это не в конечном итоге хорошо заменить какой-либо.

$resultti = $resultti.Replace("`n","x") 

-> CSV выглядел:

"Имя", "E-mail", "SamAccountName", "Рабочие станции" "Пит", "[email protected]", "Пита"; "W7DT1335 W7LT1812

х"

"Энн"; "[email protected]"; "Анне"; "W7DT13565 W7LT1612

х"

"Антон", "[email protected]"; "антон", "W7DT1345 W7LT1752

х"

Решение для меня было течь из-нить, как это: $resultti = $result.computername -join " " | Out-String -Stream

и CSV смотрел после этого приятно.

"Имя", "E-mail", "SamAccountName", "Рабочие станции"

"Пит", "[email protected]", "Пита"; "W7DT1335 W7LT1812"

"Anne" ; "[email protected]", "анна", "W7DT13565 W7LT1612"

"Антон", "[email protected]"; "антон", "W7DT1345 W7LT1752"

Смежные вопросы