1

Powershell v2.0 と v3.0 の両方で実行する必要があるスクリプトがあります。csv ファイルをインポートし、最初の行からのみ特定の値を読み取ります。csv ファイルには、1 行または複数行の値を含めることができます。

$file_data = Import-csv -Path $file_name

$col5 = "ColumnName"

...

次に$file_data[0].$col5、いくつかのステートメントで使用します

Import-csvPowershell v2.0 と v3.0 の の動作の違いは次のとおりです。

  1. Powershell v2.0 では、csv ファイルに単一の行がある場合、Import-csv は配列以外の PSObject オブジェクトを返します。したがって、上記の行はエラー "CannotIndex" をスローします$file_data。ただし、csv に複数の行がある場合、Powershell v2.0 は正常に動作します。

  2. Powershell v3.0 では、Import-csv は常に配列を返すため、インデックス作成は問題になりません。

しかし、インデックスを削除して $file_data.$col5 だけを使用すると、csv に複数の行がある場合、Powershell v2.0 はデータを表示しません。

ここで何かを見逃しています。それに対処するエレガントな方法があるはずです。

4

1 に答える 1

2

常に を返す表記でimport-csvコマンドレットを囲みませんか? また、単一の値の場合でも、V2 および V3 で有効です。@()array

$file_data = @(Import-csv -Path $file_name)
于 2013-09-19T07:54:56.907 に答える