Примечание. Этот ответ отвечает на вопрос в соответствии с вопросом , но, судя по тому, что ответ был принят, реальная проблема должна была быть иной.
Select-Object -ExpandProperty identities id, username
выводит объект для каждого индивидуального идентификатора в массиве identities
.
В порядкечтобы включить входные объекты, у которых отсутствует свойство identities
, необходимо предоставить им заполнитель фиктивный идентификатор для них , что демонстрирует следующий код, используя идентификатор заполнителя [pscustomobject] @{ provider='none'; extern_uid='none' }
через вспомогательное *Вызов 1025 *, использующий вычисленное свойство для обеспечения существования свойства identities
.
# Sample JSON:
# * The 1st object has *2* identities,
# * the 2nd one none.
$json = '[
{
"id": 45,
"name": "Emilio Roche",
"username": "EROCHE",
"state": "active",
"identities": [
{
"provider": "ldapmain",
"extern_uid": "cn=roche\\, emilio,ou=xxxxxxxxxx"
},
{
"provider": "ad",
"extern_uid": "cn=roche\\, emilio,ou=yyyyyyyyyy"
}
]
},
{
"id": 46,
"name": "A. Non",
"username": "ANON",
"state": "dormant"
}
]'
($json | ConvertFrom-Json) |
Select-Object id, username, @{ n='identities'; e={
if ($_.identities) { $_.identities }
else { [pscustomobject] @{ provider='none'; extern_uid='none' } }
} } |
Select-Object id, username -ExpandProperty identities
Выше приведено:
provider extern_uid id username
-------- ---------- -- --------
ldapmain cn=roche\, emilio,ou=xxxxxxxxxx 45 EROCHE
ad cn=roche\, emilio,ou=yyyyyyyyyy 45 EROCHE
none none 46 ANON
Обратите внимание, как EROCHE
представляется дважды , один раз для каждой личности.