在Powershell中使用-ReadCount和Select -Skip从文件获取内容不会输出预期结果

时间:2019-05-19 09:18:55

标签: powershell powershell-v3.0

背景

我正在由静态内容,动态内容和另一个文件内容的混合物构造文件输出,但是某些操作未按我期望的那样输出内容。

静态内容是文本@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...,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 cmdlet中删除Get-Content,并且文件内容按预期输出。

问题

为什么我不能拥有该脚本脚本的所有三个组件,而不能得到我期望的输出?

0 个答案:

没有答案