我目前正在将数组传输到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