如何导入 CSV 列? Import-Csv 没有按计划工作
How to import CSV column? Import-Csv not working as planned
我有一个由 CSV 文件填充的下拉列表。 CSV 中有很多列,但它只从 Name
列中提取。这是我所拥有的,在大多数 Win 7 和我试过的所有 Win 8+ PC 上都运行良好。
$customers = Import-CSV "$dir\Apps\customers.csv"
$List = $customers.name | Sort-Object
之后有一个 ForEach
循环将列表中的每个项目放入菜单。
最近我注意到一些我无法弄清楚的 Win 7 PC 问题。导入选项不起作用,除非我用 -Header
选项指定所有 header。我收到此错误:
通过添加所有 header 使其正确导入后,无论是否进行排序,我都无法将其保存 $customers.name
到 $List
变量中。但是,如果我提供一个索引号(例如 $customers[2].name
),它就可以工作。
为了解决这个问题,我研究了通过在 $customers
之后使用以下选项来测量 CSV 中的行数的方法:
$csvlength = Get-Content "$dir\Apps\customers.csv" | Measure-Object - lines
或
$csvlength = Import-CSV "$dir\Apps\customers.csv" | Measure-Object
从那里我可以通过查看 $csvlength.lines
或 $csvlength.count
查看长度。
有没有办法使用该信息将姓名列表保存到 $List
中?我试过类似的方法但没有成功:
$List = $customers[0-$csvlength.count] | Sort-Object
此外,我注意到在导入 header 时,它在列表中包含 Name
。如果可能的话,我不想包括 header。我在 CSV 的末尾还有一行,其中包含其他信息,但没有名称。这显示为一个空行。如果可能的话,我也希望将其删除。
PowerShell v2 $array.Foo
只允许访问数组对象本身的 属性 Foo
,不允许访问数组 属性 Foo
元素。允许通过数组变量访问元素属性是 PowerShell v3 引入的主要更改之一。
要解决 v2 中的此限制,您需要在排序前扩展 属性:
$List = $customers | Select-Object -Expand name | Sort-Object
我有一个由 CSV 文件填充的下拉列表。 CSV 中有很多列,但它只从 Name
列中提取。这是我所拥有的,在大多数 Win 7 和我试过的所有 Win 8+ PC 上都运行良好。
$customers = Import-CSV "$dir\Apps\customers.csv"
$List = $customers.name | Sort-Object
之后有一个 ForEach
循环将列表中的每个项目放入菜单。
最近我注意到一些我无法弄清楚的 Win 7 PC 问题。导入选项不起作用,除非我用 -Header
选项指定所有 header。我收到此错误:
通过添加所有 header 使其正确导入后,无论是否进行排序,我都无法将其保存 $customers.name
到 $List
变量中。但是,如果我提供一个索引号(例如 $customers[2].name
),它就可以工作。
为了解决这个问题,我研究了通过在 $customers
之后使用以下选项来测量 CSV 中的行数的方法:
$csvlength = Get-Content "$dir\Apps\customers.csv" | Measure-Object - lines
或
$csvlength = Import-CSV "$dir\Apps\customers.csv" | Measure-Object
从那里我可以通过查看 $csvlength.lines
或 $csvlength.count
查看长度。
有没有办法使用该信息将姓名列表保存到 $List
中?我试过类似的方法但没有成功:
$List = $customers[0-$csvlength.count] | Sort-Object
此外,我注意到在导入 header 时,它在列表中包含 Name
。如果可能的话,我不想包括 header。我在 CSV 的末尾还有一行,其中包含其他信息,但没有名称。这显示为一个空行。如果可能的话,我也希望将其删除。
PowerShell v2 $array.Foo
只允许访问数组对象本身的 属性 Foo
,不允许访问数组 属性 Foo
元素。允许通过数组变量访问元素属性是 PowerShell v3 引入的主要更改之一。
要解决 v2 中的此限制,您需要在排序前扩展 属性:
$List = $customers | Select-Object -Expand name | Sort-Object