如何在powershell中的csv文件中循环一行

sim*_*mon 21 csv powershell

我想在powershell中处理一个csv文件,但我不知道处理它时CSV文件中的列标题是什么.

例如:

$path = "d:\scratch\export.csv"
$csv = Import-csv -path $path

foreach($line in $csv)
{ 
    foreach ($head in $line | get-member | where-object {$_.MemberType -eq "NoteProperty"} | select Definition)
    {
        #pseudocode...
        doSomething($head.columnName, $head.value)
    }

}
Run Code Online (Sandbox Code Playgroud)

如何循环csv文件中的行,获取列的名称和值?或者我应该采取另一种方式(比如不使用Import-csv)?

Sha*_*evy 34

Import-Csv $path | Foreach-Object { 

    foreach ($property in $_.PSObject.Properties)
    {
        doSomething $property.Name, $property.Value
    } 

}
Run Code Online (Sandbox Code Playgroud)


use*_*531 11

迭代CSV文件每行的每一列的另一种方法是

$path = "d:\scratch\export.csv"
$csv = Import-Csv -path $path

foreach($line in $csv)
{ 
    $properties = $line | Get-Member -MemberType Properties
    for($i=0; $i -lt $properties.Count;$i++)
    {
        $column = $properties[$i]
        $columnvalue = $line | Select -ExpandProperty $column.Name

        # doSomething $column.Name $columnvalue 
        # doSomething $i $columnvalue 
    }
} 
Run Code Online (Sandbox Code Playgroud)

所以您可以选择:您可以使用任一$column.Name来获取列的名称,或者$i获取列的编号