Экспорт Powershell-только заголовок экспорта csv

#powershell #csv #import-csv #export-csv

Вопрос:

У меня есть текстовый файл, разделенный запятыми, который я пытаюсь запустить с помощью скрипта, чтобы получить данные только за текущий месяц. Когда я запускаю скрипт, он выводит файл, содержащий только строку заголовка, а остальные-просто строки с запятыми:

 Header1, Header2, Header3, Jan
,,,
,,,
,,,
 

Столбцы исходных файлов состоят из именованных заголовков, а затем данных за 12 месяцев, где заголовки представляют собой аббревиатуру месяца из 3 букв. т. е.: Январь = Январь

Мой код здесь:

 $date = Get-Date -Format MMM

(Import-CSV "C:file.txt") |
    Select "Header1","Header2","Header3","$date" |
    Export-Csv -Delimiter "," -path "C:temp.txt" -NoTypeInformation | % {$_.Replace('"','')} 
 

Кроме того, если у меня нет первого канала, окно powershell правильно отображает данные, которые я пытаюсь получить, но выдает пустой файл.

Комментарии:

1. То, что вы хотите использовать для фильтрации, — Where{} это утверждение, а не Select утверждение. Что-то вроде Import-CSV C:file.txt | Where{(Get-Date $_.Date).Month -eq (get-date).Month}|Export-Csv c:temp.txt -del ',' -notype (это при условии, что у вас в исходном файле есть столбец с пометкой «Дата»)

2. Нет, файл состоит из 12 столбцов денежных данных, где в заголовке указана аббревиатура месяца из 3 букв. Я обновил вопрос с помощью этой информации, но я постараюсь настроить ваше решение для работы.

3. Пожалуйста, предоставьте образец CSV-файла. Кроме того, пожалуйста, попробуйте сократить образец кода до необходимого минимума, чтобы устранить проблему. (Допустим, вы Import-CSV не добьетесь успеха, тогда все остальное имеет отношение к этому вопросу.)

4. Вы используете Import-Csv файл .txt, который не имеет особого смысла, это на самом деле CSV? Вы также foreach-object пытаетесь удалить " Export-Csv команду «кому», когда этот командлет не выдает никаких выходных данных. По этому вопросу недостаточно подробностей, чтобы дать правильный ответ.

Ответ №1:

Я исправил это сам, присвоив импортированные данные переменной.

 $date = Get-Date -Format MMM

$data = (Import-CSV "C:file.txt") |
    Select "Header1","Header2","Header3","$date" |
    Export-Csv -Delimiter "," -path "C:temp.txt" -NoTypeInformation | % {$_.Replace('"','')}