Powershell -从CSV中导入列并删除怪异数组格式



目前我正在导入一个csv文件,只有一个列名为"Name",我有列内的所有数据,目前逗号分隔。当我运行下面的代码示例,然后编写输出时,我有一个奇怪的格式问题,我希望你们能够帮助我。我可以用干净的数据遍历数组中的每个名字。谢谢!

$Name = Import-Csv C:UsersexampledocumentstestObjects.csv

下面是一个例子,如果我在foreach循环中运行它,输出是什么样子的。

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

我希望帮助如何分离它,所以当它通过foreach循环运行时,它只包括名称,而不是@{name =,}。谢谢你!

问题是CSV文件是对象表示。虽然它通常是一个平面物体,但仍然是一个物体。可以这么说,给定对象的属性是列标头,值是单元格值。

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

$Name = 
Import-Csv C:UsersexampledocumentstestObjects.csv |
Select-Object -ExpandProperty Name

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

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

$Name = (Import-Csv C:UsersexampledocumentstestObjects.csv).Name

与您的示例保持一致,并且为了进一步演示的目的:

$Name = Import-Csv C:UsersexampledocumentstestObjects.csv
foreach ($s in $Name)
{
write-host $s.Name
}

最新更新