Home > Back-end >  PowerShell - How to get key values of a nested array
PowerShell - How to get key values of a nested array

Time:05-02

I'm using the new MS Graph PowerShell cmds, and trying to get a list of all the users assigned as owners of an Azure AD application registration using the cmd Get-MgApplicationOwner

Get-MgApplicationOwner -ApplicationId $appObjectId

This gives me the results as below, with 2 user owners

Id DeletedDateTime AdditionalProperties
00000000-0000-0000-0000-000000000000 -- {[@odata.type, #microsoft.graph.user], [businessPhones, System.Object[]], [displayName, User1 LastName], [givenName, User1]...}
00000000-0000-0000-1111-000000000000 -- {[@odata.type, #microsoft.graph.user], [businessPhones, System.Object[]], [displayName, User2], [userPrincipalName, [email protected]]}

If I do (Get-MgApplicationOwner -ApplicationId $appObjectId).AdditionalProperties, I can see all the properties of the 2 users as 1 table

Key Value
@odata,type "#microsoft,graph,user"
businessPhones {1234567890}
displayName User1 LastName
givenName User1
mail [email protected]
surname LastName
userPrincipalName [email protected]
@odata,type #microsoft,graph,user
businessPhones {}
displayName User2
userPrincipalName [email protected]

I'm trying to get the UserPrincipalNames from this AdditionalProperties array, and I've tried dot-notation (Get-MgApplicationOwner -ApplicationId $appObjectId).AdditionalProperties.UserPrincipalName but no luck. I know I could do a lookup against each Id but would prefer not to

Desired output as an array

[email protected]    
[email protected]

CodePudding user response:

Actually I found the answer is that the key value was case-sensitive. Both dot-notation and SantiagoSquarzon's solution work when using case-correct userPrincipalName

  • Related