You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell导出数组到JSON文件时如何保留属性定义的原有顺序

问题原因

属性乱序问题根源在于:你创建对象时使用的普通哈希表@{}是无序数据结构,不保留属性的定义插入顺序,因此转换为JSON时会输出随机排序的键。

解决方法

方案1:使用有序哈希表(兼容PowerShell 3.0及以上版本,推荐)

只需要给定义属性的哈希表加上[ordered]类型标记,即可保留属性的定义顺序,修改后的代码如下:

# 把原来的 @{ 替换为 [ordered]@{} 即可
New-Object PSObject -Property [ordered]@{
    Name = $ADInfo.DisplayName
    Username = $Username
    Email = $Email
    Date = $Date
    Manager = $ManagerName
    ManagerEmail = $ManagerEmail
    Manager2 = $ManagerName2
    ManagerEmail2 = $ManagerEmail2
    Manager3 = $ManagerName3
    ManagerEmail3 = $ManagerEmail3
    ServiceTag = $ServiceTagTextBox.text
    FedExSentTracking = "https://www.fedex.com/fedextrack/?tracknumbers=" + $FedEXSentTextBox.text
    FedExRecievedTracking = "https://www.fedex.com/fedextrack/?tracknumbers=" + $FedEXRecievedTextBox.text
}

$script:jsonDB += $CollectionData

$script:jsonDB | ConvertTo-Json -Compress  | 
Set-Content C:\Support\HardwareCollection.json

方案2:使用PSCustomObject类型加速器(写法更简洁,同样兼容PowerShell 3.0+)

你也可以直接用[PSCustomObject]创建对象,无需调用New-Object,天然保留属性顺序:

$CollectionData = [PSCustomObject]@{
    Name = $ADInfo.DisplayName
    Username = $Username
    Email = $Email
    Date = $Date
    Manager = $ManagerName
    ManagerEmail = $ManagerEmail
    Manager2 = $ManagerName2
    ManagerEmail2 = $ManagerEmail2
    Manager3 = $ManagerName3
    ManagerEmail3 = $ManagerEmail3
    ServiceTag = $ServiceTagTextBox.text
    FedExSentTracking = "https://www.fedex.com/fedextrack/?tracknumbers=" + $FedEXSentTextBox.text
    FedExRecievedTracking = "https://www.fedex.com/fedextrack/?tracknumbers=" + $FedEXRecievedTextBox.text
}

方案3:兼容PowerShell 2.0的旧版本方案

如果你的运行环境只能使用PowerShell 2.0,没有有序哈希表支持,可以通过Select-Object手动指定属性顺序再转换JSON:

# 原创建对象的代码不变,导出前按定义顺序选择属性即可
$script:jsonDB | Select-Object Name,Username,Email,Date,Manager,ManagerEmail,Manager2,ManagerEmail2,Manager3,ManagerEmail3,ServiceTag,FedExSentTracking,FedExRecievedTracking | ConvertTo-Json -Compress | Set-Content C:\Support\HardwareCollection.json

内容的提问来源于stack exchange,提问作者Listor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:15:03