Import-CSV Powershell v2.0与v3.0

问题描述 投票:1回答:1

我有一个脚本需要在Powershell v2.0和v3.0上运行它导入一个csv文件并仅从第一行读取特定值。 csv文件可以有一行值或多行。

$file_data = Import-csv -Path $file_name

$col5 = "ColumnName"

...

然后在某些声明中使用$file_data[0].$col5

这是Import-csv在Powershell 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将不会显示任何数据。

我错过了这里的一些东西。应该有一种优雅的方式来处理它。

powershell csv powershell-v2.0 powershell-v3.0
1个回答
2
投票

为什么不用import-csv表示法封装@() cmdlet,它总是返回array,在单个值的情况下,在V2和V3中有效?

$file_data = @(Import-csv -Path $file_name)
© www.soinside.com 2019 - 2024. All rights reserved.