Фон
Я создаю вывод файла из смеси статического содержимого, динамического содержимого и содержимого другого файла, но некоторые операции не выводят содержимое, как я ожидаюк.
Статическим содержимым является текст @LANGUAGE\r\nENGLISH\r\n\r\n@FIELDS
, затем я добавляю первую строку заголовка некоторого входного файла CSV, затем текст \r\n@$set_name
и, наконец, каждую строку входного файла CSV послепервая строка.
код Powershell
$set_name = "ITEM_SET"
$inputCSVFile = "C:\temp\in\$set_name.csv"
$outputTXTFile = "C:\temp\out\$set_name.txt"
$staticContent = "@LANGUAGE`r`nENGLISH`r`n`r`n@FIELDS"
$dynamicContent = "`r`n@$set_name"
# output content to file
$staticContent | Out-File $outputTXTFile
Get-Content $inputCSVFile | Select -First 1 | Out-File $outputTXTFile -Append
$dynamicContent | Out-File $outputTXTFile -Append
# content from the next line is not appearing in the output file
Get-Content $inputCSVFile -ReadCount 1000 | Select -Skip 1 | Out-File $outputTXTFile -Append
Результат
Выходной файл содержит заголовок @LANGUAGE...
,1-я строка CSV-файла с заголовками полей A1A_A1,A1A_A2,A1A_A3,A1A_N,A2A_A1,...
и строкой с динамическим содержимым @ITEM_SET
, но мне не хватает данных из оставшейся части входного CSV-файла 0,0,0,1,0,...
.
Другая информация
Входные файлы CSV варьируются от нескольких строк до тысяч строк.Я попытался удалить последний Out-File
из конца конвейера в ошибочной строке скрипта, и вывод на консоль соответствует ожиданиям.Я попытался удалить Select -Skip 1
из середины конвейера в ошибочной строке скрипта, и содержимое файла выводится, как и ожидалось.Я попытался удалить -ReadCount 1000
из командлета Get-Content
в ошибочной строке сценария, и содержимое файла выводится, как и ожидалось.
Вопрос
Почему я не могу иметь все три компонента этой строки сценариев и получить ожидаемый результат?