Я надеюсь, что кто-то может помочь мне с этим.Я встроил в PowerShell функцию для импорта файла с разделителями, который имеет две строки заголовка.Я объединяю две строки заголовка в одну и добавляю данные ниже.В PowerShell это работает нормально:
$Delimiter = ";"
# Load 2nd and 3rd row which contain header informstion
$imData = (Get-Content -Path $csv_file | Select-Object -Skip 1 | select -First 2 ).split($Delimiter)
$columnsCount = $imData.Count/2
# Check if first row header is emtpy, if not, add information to second row
for($i=0; $i -lt $columnsCount;$i++){
if(![string]::IsNullOrEmpty($imData[$i].Substring(1,$imData[$i].Length-2))){
$imData[$i+$columnsCount] = $imData[$i] #.Substring(1,$imData[$i].Length-2)
}
}
$csvData = Get-Content -Path $csv_file | Select-Object -Skip 3
# Remove first row, second row contains header
$imData = $imData[$columnsCount..($imData.Length-1)]
$csvData = $csvData | ConvertFrom-Csv -Delimiter $Delimiter -WarningAction Ignore -Header $imData
Окончательные значения $ csvData верны, и я могу работать с этим.Однако в PowerShell Core это не работает.Он начинается с команды Get-Content, которая не добавляется автоматически «в начале и в конце каждого столбца.Во-вторых, когда я вызываю этот код в PowerShell Core, он не устанавливает заголовок.На самом деле, он даже не создает правильный объект CSV, как в PowerShell.Ниже моего основного кода:
$delimiter = ";"
#[array]$header = ::new()
# Load 2nd and 3rd row which contain header informstion
[array]$imData = (Get-Content -Path $path | Select-Object -Skip 1 | Select-Object -First 2 ).split($delimiter)
# Set header count
$columnsCount = $imData.Count/2
# Check if first row header is emtpy, if not, add information to second row
for($i=0; $i -lt $columnsCount;$i++){
# Check if column header is empty
if(![string]::IsNullOrEmpty($imData[$i])){
#if(![string]::IsNullOrEmpty($imData[$i].Substring(1,$imData[$i].Length-2))){
$imData[$i+$columnsCount] = $imData[$i] #.Substring(1,$imData[$i].Length-2)
}
}
# Import CSV without header
$csvData = Get-Content -Path $path | Select-Object -Skip 3
# Remove first row, second row contains header
$imData = $imData[$columnsCount..($imData.Length-1)]
# Add header to CSV
$header = ((($imData -split (" " )))) | ConvertFrom-Csv -Delimiter $delimiter
$csvData = $csvData | ConvertFrom-Csv -Delimiter $delimiter -Header $header
$csvData = $header + $csvData
Я уже пробовал разные способы, но, похоже, ничего не получалось.Я надеюсь, что у кого-то есть золотой совет.Спасибо Стефан