Extending from my comment. As otherwise, you end up doing stuff sort of like this:
Get-Content -Path 'D:\Temp\book1.csv'
# Results
<#
"Site","Dept"
"Main","aaa,bbb,ccc"
"Branch1","ddd,eee,fff"
"Branch2","ggg,hhh,iii"
#>
Get-Content -Path 'D:\Temp\book1.csv' |
Select-Object -Skip 2
# Results
<#
"Branch1","ddd,eee,fff"
"Branch2","ggg,hhh,iii"
#>
Get-Content -Path 'D:\Temp\book1.csv' |
Select-Object -Skip 2 |
ConvertFrom-Csv -Header Site, Dept
# Results
<#
Site Dept
---- ----
Branch1 ddd,eee,fff
Branch2 ggg,hhh,iii
#>
As for using Import-Csv, you can use .Net ArrayList and do something like this:
([System.Collections.ArrayList]$BooksList = (Import-Csv -Path 'D:\Temp\book1.csv'))
# Results
<#
Site Dept
---- ----
Main aaa,bbb,ccc
Branch1 ddd,eee,fff
Branch2 ggg,hhh,iii
#>
$BooksList.Remove($BooksList[0])
$BooksList
# Results
<#
Site Dept
---- ----
Branch1 ddd,eee,fff
Branch2 ggg,hhh,iii
#>
$BooksList.Remove($BooksList[1])
$BooksList
# Results
<#
Site Dept
---- ----
Branch1 ddd,eee,fff
#>
You can use the same approach to add record rows to the csv
Clear-Host
$BooksList = @()
([System.Collections.ArrayList]$BooksList = (Import-Csv -Path 'D:\Temp\book1.csv'))
# Results
<#
Site Dept
---- ----
Main aaa,bbb,ccc
Branch1 ddd,eee,fff
Branch2 ggg,hhh,iii
#>
($AddToBooksList = [pscustomobject]@{
Site = 'Branch3'
Dept = 'jjj,kkk,lll'
}
)
# Results
<#
Site Dept
---- ----
Branch3 jjj,kkk,lll
#>
$BooksList.Add($AddToBooksList)
# Results
<#
Site Dept
---- ----
Main aaa,bbb,ccc
Branch1 ddd,eee,fff
Branch2 ggg,hhh,iii
Branch3 jjj,kkk,lll
#>
$BooksList[3]
# Results
<#
Site Dept
---- ----
Branch3 jjj,kkk,lll
#>
$count = 0; gc $path | where {$count++ -ne 1}