Как следует из сообщения об ошибке, ConvertFrom-Json
выводит [pscustomobject]
экземпляров (System.Management.Automation.PSCustomObject
) по умолчанию - и этот тип не имеет перечислителя. [1]
В PowerShell [Core] 6 + вы можете использовать переключатель -AsHashtable
, который возвращает [hashtable]
экземпляр, который do имеет .GetEnumerator()
method.
В Windows PowerShell необходимо перечислить свойства по-разному через (скрытый) набор .psobject.Properties
(также работает в PowerShell [Core]):
$fromJson = @'
{
"files":{
"item":"item.html",
"header":"header.html",
"content":"content.html",
},
"items":[
{
"folder":"Advert",
"file":"ad2.json"
},
{
"folder":"YouTube",
"file":"ad3.json"
},
]
}
'@ | ConvertFrom-Json
$fromJson.Files.psobject.Properties | foreach {
"$($_.Name) - $($_.Value)"
}
Обратите внимание на необходимость использования .Name
вместо .Key
; однако, если вы имеете дело с хеш-таблицами, обратите внимание, что .Name
тоже работает.
Выше приведено:
item - item.html
header - header.html
content - content.html
Работает со свойством .Items
, потому что он содержит массив ([object[]
), а массивы имеют метод .GetEnumerator()
.