PowerShell 正在重新排列我的列,但我不明白为什么

RIS*_*023 1 csv powershell

我正在使用的代码如下:

Import-Csv -Path "E:\CSV\GA.csv"  | Group-Object Product | ForEach {
    New-Object PSObject -Property @{
        Product = $_.Name 
        Stockcode = $_.Group[0].Stockcode
        QuantityCounted = ($_.Group | Measure-Object -Property QuantityCounted -Sum).Sum    
    }
} | Export-Csv "E:\CSV\test.csv" -NoTypeInformation  
Run Code Online (Sandbox Code Playgroud)

标头应按以下顺序排列:

Import-Csv -Path "E:\CSV\GA.csv"  | Group-Object Product | ForEach {
    New-Object PSObject -Property @{
        Product = $_.Name 
        Stockcode = $_.Group[0].Stockcode
        QuantityCounted = ($_.Group | Measure-Object -Property QuantityCounted -Sum).Sum    
    }
} | Export-Csv "E:\CSV\test.csv" -NoTypeInformation  
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果有人能指出我正确的方向,那就太棒了,谢谢。

San*_*zon 5

默认情况下,哈希表不是排序的,如果您需要对象的属性来保留其顺序,则需要使用有序字典

[ordered]属性是在 PowerShell 3.0 中引入的。

New-Object PSObject -Property ([ordered]@{
    Product         = 1
    Stockcode       = 2
    QuantityCounted = 3
})
Run Code Online (Sandbox Code Playgroud)

如果您运行的是最新版本的 PowerShell,则可以使用[pscustomobject]类型加速器创建具有有序属性的对象。这比New-Object.

[pscustomobject]PowerShell 4.0 中添加了类型加速器。

[pscustomobject]@{
    Product         = 1
    Stockcode       = 2
    QuantityCounted = 3
}
Run Code Online (Sandbox Code Playgroud)