我有以下代码:
$script:DatabaseFile = "C:\NewFolder\test.csv"
[string[]]$database = Get-Content -Path $script:DatabaseFile
[Collections.Generic.List[String]]$script:Database = $database
$script:Database | Out-File $script:DatabaseFile -Encoding ascii
$databaseAsCsvObject = Import-Csv $script:DatabaseFile
$databaseAsCsvObject | sort "Release Group","Email Address" | Export-Csv $script:DatabaseFile
$script:DatabaseFile
包含以下内容:
Release Group,Email Address,Template ID,Time
CDP.HLO.1,test@test.com,Template1,02:00
EDP.HLO.1,test1@test1.com,Template2,03:00
这会根据前两列成功对csv文件进行排序。
如何编写等效代码而不必保存文件,然后将其导入为csv?
我可以将$script:Database
作为" CSV"对象,然后对它进行排序,然后只将其写入文件一次?
答案 0 :(得分:2)
$script:Database = @(
[pscustomobject]@{"Release group"="EDP.HLO.1";"Email Address"="test1@test1.com";"Template ID"="Template2";"time"="03:00"},
[pscustomobject]@{"release group"="CDP.HLO.1";"Email Address"="test@test.com";"Template ID"="Template1";"time"="02:00"})
$sorted = $script:Database | Sort-Object "Release Group", "Email Address"
$script:DatabaseFile = "C:\data\test.csv"
$sorted | Export-csv -NoTypeInformation -Path $script:DatabaseFile
好的,所以我完全重写了我的第一个答案。首先使用所需标题创建自定义对象。根据需要创建任意数量的条目。对对象排序,然后导出到csv:)