Powershell - 从 CSV 导入列并删除奇怪的数组格式

Powershell - Import Column from CSV and remove Weird Array Formatting

目前,我正在导入一个 csv 文件,其中只有一个名为“名称”的列,并且该列中的所有数据当前都以逗号分隔。当我 运行 下面的代码示例,然后编写输出时,我遇到了一个奇怪的格式问题,希望你们能提供帮助。所以我可以用干净的数据遍历数组中的每个名称。谢谢!

$Name = Import-Csv C:\Users\example\documents\testObjects.csv

下面是一个示例,说明如果我 运行 通过 foreach 循环输出结果。

foreach ($s in $Name)
{
write-host $s
}
@{Name=abc000100,}
@{Name=def0001000,}

我希望得到有关如何将其分离出来的帮助,因此当它 运行 通过 foreach 循环时,它只包含名称,而不包含 @{Name=,}。谢谢!

问题是 CSV 文件是 object 表示。虽然它通常是一个平坦的 object,但仍然是一个 object。给定 object 的属性是列 header,值是单元格值,可以这么说。

因此,在这种情况下,您输出整个 object,PowerShell 以 Object/Hash 表示法显示。您还没有发布 CSV 文件本身的示例,但听起来您只需要名称 属性 的值。以下示例将演示如何访问它。

$Name = 
Import-Csv C:\Users\example\documents\testObjects.csv |
Select-Object -ExpandProperty Name

这应该会产生一个具有 属性 个值的平面数组。

或者您可以像这样展开 属性:

$Name = (Import-Csv C:\Users\example\documents\testObjects.csv).Name

与您的示例保持一致,并用于进一步演示:

$Name = Import-Csv C:\Users\example\documents\testObjects.csv

foreach ($s in $Name)
{
    write-host $s.Name
}