Powershell保存元素,以便json文件



我目前正在将数组传输到json文件。我希望能够保存元素。

{
New-Object PSObject -Property @{
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:SupportHardwareCollection.json

当我这样保存时,输出看起来像下面的db。

[{"ServiceTag":"1","Username":"RandomUser","Manager":"Random Manager","ManagerEmail3":"Manager3@company.com","ManagerEmail":"Manager@company.com","Name":"Some User","ManagerEmail2":"Manager2@company.com","Manager3":"Random Manager3","FedExSentTracking":"https://www.fedex.com/fedextrack/?tracknumbers=1","FedExRecievedTracking":"https://www.fedex.com/fedextrack/?tracknumbers=1","Manager2":"Random Manager 2","Date":"10/06/2021 09:17:24 -05:00","Email":"Client@Company.com"}]

如何保存元素,以便它们按照我的第一个代码块的顺序保存到json文件中,而不是第二个代码块中的无序混乱。

非常感谢!

使用[pscustomobject]初始化语法来创建对象,而不是New-Object -Property,这将保留指定属性的顺序:

[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
}

如果您发现自己处于需要提前构建属性字典的情况,并希望在稍后的时间点将其传递给New-Object[pscustomobject],请将哈希表文字强制转换为[ordered]-这将使PowerShell创建插入顺序字典而不是哈希表:

$properties = [ordered]@{
Name = "John Doe"
}
# ...
# Add some more property definitions to the dictionary
$properties['Date'] = Get-Date
$properties['OtherStuff'] = "more information"
# both methods will now produce an object with the properties in the right order
New-Object PSObject -Property $properties
# or
[pscustomobject]$properties

最新更新