看起来我期望的工作方式并没有实现。我想要返回多个对象,但它似乎只返回一个。我无法做到这一点。
一个非常简单的 JSON 文件:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"value": "sa01"
},
"virtualNetworkName": {
"value": "nvn01"
}
}
}
我想将参数及其值动态添加到一个漂亮的 pscustomobject 中(包含上述数据,看起来如下所示):
ParameterName | Value
===========================
storageAccountName | sa01
virtualNetworkName | nvn01
我不明白的是为什么以下返回一个对象:
$TemplateParametersFile = "C:\Temp\deploy-Project-Platform.parameters.json"
$content = Get-Content $TemplateParametersFile -Raw
$JsonParameters = ConvertFrom-Json -InputObject $content
$JsonParameters.parameters | Measure-Object
在写这篇文章时,我最终找到了一个符合我想要的解决方案,我将其发布在答案部分。请随意教导我并提高...
最佳答案
我会做一些不同的事情,跳过哈希表,并使用隐藏的 PSObject
属性。因此,在将 JSON 数据存储在 $content
中之后,我会执行以下操作:
#Convert JSON file to an object
$JsonParameters = ConvertFrom-Json -InputObject $content
#Create new PSObject with no properties
$oData = New-Object PSObject
#Loop through properties of the $JsonParameters.parameters object, and add them to the new blank object
$JsonParameters.parameters.psobject.Properties.Name |
ForEach{
Add-Member -InputObject $oData -NotePropertyName $_ -NotePropertyValue $JsonParameters.parameters.$_.Value
}
$oData
顺便说一句,转换您发布的 JSON 时遇到问题,我必须在两个值周围添加引号,例如 "value": "sa01"
。
关于json - ConvertFrom-JSON 到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42539666/