引用脚本:

脚本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/

10-10 03:32