引用脚本:
脚本1:
$csvList = @()
$csvList += New-Object PSObject -Property @{name="test1";accountname="testuser1";mail="[email protected]"}
$csvList += New-Object PSObject -Property @{name="test2";accountname="testuser2";mail="[email protected]"}
$csvList += New-Object PSObject -Property @{name="test3";accountname="testuser3";mail="[email protected]"}
$csvList += New-Object PSObject -Property @{name="test4";accountname="testuser4";mail="[email protected]"}
$csvList | Export-Csv c:\temp\testcsv.csv -NoTypeInformation
脚本2(在编辑中添加以反射(reflect)扩展的用法):
$aTest = @()
for($x=0;$x -le 5;$x++)
{
$aTest += New-Object PSObject -Property @{Name="test$($x)"; `
AccountName="testuser$($x)"; `
Mail="user$($x)@somewhere.com"}
}
$aTest | Export-Csv c:\temp\testcsv.csv -NoTypeInformation
问题:
虽然该脚本创建了CSV并在正确的行中包含了我需要的所有数据,但我无法弄清楚如何控制列的位置。即使我通过
name,accountname,mail
排序和添加数据,Powershell还是通过mail,name,accountname
排序数据。 如何控制列顺序? 注意:如果我在导出之前对
$csvList
的内容进行了屏幕转储,则订单已更改。 最佳答案
每个PSObject
本质上是一个哈希表。哈希表中没有值的顺序。 Select-Object
可以为您重新格式化订单。
最后一行:
$csvList | Select-Object name,accountname,mail | Export-Csv c:\temp\testcsv2.csv -NoTypeInformation
从以下论坛问题中获得了想法:Source
关于powershell - 创建CSV可导出对象数组时如何控制列名的位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25669995/