首页 > 解决方案 > 在powershell中使用-ReadCount和Select -Skip从文件中获取内容未输出预期结果

问题描述

背景

我正在从静态内容、动态内容和另一个文件内容的混合中构建一个文件输出,但某些操作没有按我的预期输出内容。

静态内容是 text @LANGUAGE\r\nENGLISH\r\n\r\n@FIELDS,然后我附加一些输入 CSV 文件的第一个标题行,然后是 text \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 1000Get-Content脚本的违规行上的 cmdlet 中删除 ,并且文件内容按预期输出。

问题

为什么我不能拥有该脚本行的所有三个组件并获得我期望的输出?

标签: powershellpowershell-3.0

解决方案


推荐阅读