【问题标题】:Powershell - Import Column from CSV and remove Weird Array FormattingPowershell - 从 CSV 导入列并删除奇怪的数组格式
【发布时间】:2021-10-21 10:31:51
【问题描述】:

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

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

以下是我通过 foreach 循环运行输出的示例。

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

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

【问题讨论】:

    标签: powershell csv import-csv


    【解决方案1】:

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

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

    $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
    }
    

    【讨论】:

    • 非常感谢 Steven,我已经有一段时间没有使用 CSV 文件了,非常感谢您的帮助。这正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 2015-03-05
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多