fmt/csv.ps1
|
param($Data, [hashtable] $Options) $csv = @{} + $Options $path = $csv.Path; $csv.Remove('Path') $encoding = if ($csv.Encoding) { $csv.Encoding } else { 'utf8NoBOM' }; $csv.Remove('Encoding') $strip = $csv.StripQuotes; $csv.Remove('StripQuotes') $columns = if ($Data[0] -is [Data.DataRow]) { $Data[0].Table.Columns.ColumnName } else { $Data[0].PSObject.Properties.Name } $lines = $Data | Select-Object $columns | ConvertTo-Csv @csv if ($strip) { $lines = $lines | ForEach-Object { $_.Replace('"', '') } } $lines | Set-Content -LiteralPath $path -Encoding $encoding |