パイプ文字区切り記号を使用して、ディレクトリからすべての .CSV ファイルを取得してインポートするコードがあります。
$apeasy = dir .\APEasy\*.csv | Import-CSV -delimiter '|'
問題は、これが null を返すことです。何をやっても例外なく。奇妙なことは、これが機能することです:
dir .\APEasy\*.csv
これは、インポートするファイルとして Import-CSV にパイプする必要がある FileInfo オブジェクトを返します。さらに、次の 2 つのコマンドが機能します。
$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 は、それが空であることを返します。