Funkcja PowerShell 5.1 - konwersja do wiersza CSV z opcjonalnym otaczaniem cudzysłowami.

Standardowo w PowerShell 5.1 konwersja do CSV powoduje zawsze otaczanie każdej komórki cudzysłowami. Nie działa -UseQuotes AsNeeded z v.7.

Plik convToCsvRow.ps1(.zip) zawiera funkcję do scalania tablicy łańcuchów w wiersz CSV.

function encCsvRow {param( [string[]]$strArr ) #dodaje okalające cudzysłowy, gdy trzeba i łączy wiersz CSV
  ($strArr | foreach {$s = $_ -replace '"','""'; if ($s -match '[;"\r\n]') {$s = "`"$s`""}; $s}) -join ";" 
}#encCsvRow @("abc","`"ab`"c;ą`r`nć",'ef"g','h,i','j;k') 
#        ->     abc;"""ab""c;ą`r`nć";"ef""g";h,i;"j;k"  , gdzie `r`n = nowy wiersz

Czasem może się też przydać usuwanie znaków wymuszających cudzysłowy:

function clrCsv { param( [string[]]$strArr ) 
# usuwa znaki wymuszające cudzysłowy; gdy '"' nie jest na pocz. to wchodzi dobrze w Excelu
  ($strArr | foreach {$_ -replace ';',',' -replace '[\r\n]','   ' -replace '^"',' "'}) -join ";"
}#clrCsv @("abc","`"ab`"c;ą`r`nć",'ef"g','h,i','j;k') 
#     ->      abc; "ab"c,ą      ć;ef"g;h,i;j,k

FileExplorer.png Wskazówka - aby uruchomić PowerShell w folderze, w którym znajduje się skrypt - przejdź w Eksploratorze Plików do tego foldera i w pasku adresu wpisz powershell_ise lub powershell.exe [Enter].