how do I loop through a line from a csv file in powershell
Import-Csv $path | Foreach-Object { foreach ($property in $_.PSObject.Properties) { doSomething $property.Name, $property.Value } }
A slightly other way of iterating through each column of each line of a CSV-file would be
$path = "d:\scratch\export.csv"$csv = Import-Csv -path $pathforeach($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 }}
so you have the choice: you can use either $column.Name
to get the name of the column, or $i
to get the number of the column
$header3 = @("Field_1","Field_2","Field_3","Field_4","Field_5") Import-Csv $fileName -Header $header3 -Delimiter "`t" | select -skip 3 | Foreach-Object { $record = $indexName foreach ($property in $_.PSObject.Properties){ #doSomething $property.Name, $property.Value if($property.Name -like '*TextWrittenAsNumber*'){ $record = $record + "," + '"' + $property.Value + '"' } else{ $record = $record + "," + $property.Value } } $array.add($record) | out-null #write-host $record }