Кажется, проблема в том, что в вашем CSV-файле нет заголовков.
Вот как можно прочитать CSV-файл без заголовков (при условии, что вы знаете, сколько существует столбцов):
$csvFile = 'U:\To_Delete\Layer_search\WB_layers-mod.cs'
$headers = 'Column1' #add column headers here as needed; e.g. 'Column1','Column2','etc.'
$data = Import-CSV -Path $csvFile -Header $headers
Теперь вы импортировали свои данные, сохранив первую строку и присвоив имена всем столбцам, чтобы они обрабатывались как свойства массива пользовательских объектов.
Вы уже знаете, как добавить своиновое свойство / столбец:
$data = $data | Select-Object *, @{Name='NewColumn';Expression={$false}}
Выше я использовал $false
вместо 'False'
, но здесь это мало что меняет, оба будут создавать одинаковые выходные данные в вашем конечном CSV.
Наконец, вам нужно вывести ваши новые данные в CSV.Для этого вам нужен способ создать файл CSV без заголовков.Там нет опции -NoHeader
, поэтому хитрость здесь в том, чтобы переключить Export-Csv
на ConvertTo-CSV
, что создает CSV в памяти;затем используйте Select-Object -Skip 1
, чтобы пропустить первый элемент в массиве (который является строкой заголовка), затем используйте Set-Content
, чтобы сохранить эти данные в файле:
$data | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content -Path $csvFile -Force
NB: James's Answer лучше с точки зрения простоты и производительности.Этот ответ предоставлен, чтобы показать более дружественный подход к CSV;в случае, если вы хотите обрабатывать ваши данные больше как настоящие CSV (например, использовать данные из существующих столбцов / подобные вещи), а не просто манипулировать строками в файлах.