导入CSV Powershell v2.0与v3.0

导入CSV Powershell v2.0与v3.0,powershell,csv,powershell-2.0,powershell-3.0,Powershell,Csv,Powershell 2.0,Powershell 3.0,我有一个脚本需要在Powershell v2.0和v3.0上运行 它导入csv文件并仅从第一行读取特定值。csv文件可以有一行值或多行值 $file_data = Import-csv -Path $file_name $col5 = "ColumnName" 然后在某些语句中使用$file\u data[0]。$col5 下面是Powershell v2.0和v3.0之间导入csv的行为的区别 在Powershell v2.0上,当csv文件中只有一行时,“导入csv”将返回非数组PSO

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

$file_data = Import-csv -Path $file_name

$col5 = "ColumnName"

然后在某些语句中使用
$file\u data[0]。$col5

下面是Powershell v2.0和v3.0之间导入csv的行为的区别

  • 在Powershell v2.0上,当csv文件中只有一行时,“导入csv”将返回非数组PSObject对象。因此,上面的行将抛出一个错误“CannotIndex”
    $file\u data
    。 但是,当csv中有多行时,Powershell v2.0将正常工作

  • 在Powershell v3.0上,导入csv始终返回一个数组,因此索引不是问题

  • 但是如果我删除索引并仅使用$file_data.$col5,当csv有多行时,Powershell v2.0将不会显示任何数据


    我错过了一些东西。应该有一种很长的方法来处理它。

    为什么不使用
    @()
    符号将
    导入csv
    cmdlet括起来,该符号总是返回一个
    数组
    ,如果只有一个值,并且在V2和V3中有效

    $file_data = @(Import-csv -Path $file_name)
    

    有趣的是,让我来测试一下这个方法。谢谢你。