Get-Content из файла с -ReadCount и Select -Skip в powershell не выводит ожидаемый результат - PullRequest
0 голосов
/ 19 мая 2019

Фон

Я создаю вывод файла из смеси статического содержимого, динамического содержимого и содержимого другого файла, но некоторые операции не выводят содержимое, как я ожидаюк.

Статическим содержимым является текст @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 в ошибочной строке сценария, и содержимое файла выводится, как и ожидалось.

Вопрос

Почему я не могу иметь все три компонента этой строки сценариев и получить ожидаемый результат?

...