具有null属性的select-object -expandproperty

mni*_*eto 2 powershell select-object

我有一组对象,其中包含id,username,email,current_sign_in_at,identityities等属性.其中Identities属性是具有两个属性的对象数组.这将是对象的json表示:

{
        "id": 45,
        "name": "Emilio Roche",
        "username": "EROCHE",
        "state": "active",
        "identities": [
            {
                "provider": "ldapmain",
                "extern_uid": "cn=roche\\, emilio,ou=xxxxxxxxxx"
            }    
          ]
    }
Run Code Online (Sandbox Code Playgroud)

但是列表中的一些元素没有identityities属性.所以,当我这样做时:

Get-Collection | Select-Object id, username  -ExpandProperty identities
Run Code Online (Sandbox Code Playgroud)

我只获得具有identities属性的元素.我需要所有实体,有或没有身份属性

Man*_*ing 5

如果没有太多属性可以处理,您可以使用以下内容:

Get-Collection | Select-Object id, 
    username,
    @{n='provider';e={$_.identities.provider}}, 
    @{n='extern_uid';e={$_.identities.extern_uid}}
Run Code Online (Sandbox Code Playgroud)

这将返回$null属性providerextern_uid那些没有identities属性的对象:

id username provider extern_uid                     
-- -------- -------- ----------                     
45 EROCHE   ldapmain cn=roche\, emilio,ou=xxxxxxxxxx
46 EROCHE                                           
Run Code Online (Sandbox Code Playgroud)

编辑

正如mklement0指出的那样,如果identities属性包含多个对象,则该方法不起作用.

mklement0的答案有一个优雅的解决方案,应该是接受的答案.