目前我正在导入一个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
}