我有一段代码应该使用管道字符分隔符从目录中获取所有 .CSV 文件并导入它们。
$apeasy = dir .\APEasy\*.csv | Import-CSV -delimiter '|'
问题是这返回null。无一例外,不管我做什么。奇怪的是,这有效:
dir .\APEasy\*.csv
它返回一个 FileInfo 对象,该对象应该被导入 Import-CSV 作为要导入的文件。此外,这两个命令有效:
$csvFiles = dir .\Processed_Data_Review -Filter *.txt | Import-CSV -header(1..19) -delimiter "$([char]0x7C)"
dir .\LIMS -Filter *.csv | Import-CSV | ? {$_.SampleName -like "????-*"}| Export-CSV -Path .\lims_output.txt -NoTypeInformation
我真的不知道这里发生了什么。我正在处理一个基本的管道分隔文件,每个字段的引号(这很好,我可以用这些导入数据)。这里没有什么特别的。该文件在那里,Import-CSV 只是由于某种原因没有得到它。
所以我的问题是:什么可能导致“dir”抓取的文件无法通过管道传输到 Import-CSV?
编辑:这样做的总体目标是在事先不知道其名称的情况下读取目录中的 CSV 文件,并将特定列输出到各种输出文件中。
编辑:这是现在的代码行:
$apeasy = Get-ChildItem .\APEasy\*.csv | Select-Object -ExpandProperty FullName | Import-CSV -delimiter "$([char]0x7C)"
隔离 Get-ChildItem 语句,以及隔离 Get-Child 和 Select-Object 都返回它们应该返回的内容。目录中的 csv 文件列表,以及它们的完整路径数组。尽管如此,当它们被导入 Import-CSV 时,它们就会消失。变量上的 Get-Member 返回它是空的。