C# PSObject是否可以具有PSObject属性?

C# PSObject是否可以具有PSObject属性?,c#,powershell,expandoobject,psobject,C#,Powershell,Expandoobject,Psobject,我有一个C Cmdlet,它与REST服务交互,将JSON反序列化为动态对象ExpandoObject。当expando传递给WriteObject时,它会作为字典写入管道,因此我将其转换为类似于这样的PSObject,以使其属性可供类似Select Object的人访问: 当我尝试从管道中选择projectTeam属性时,我得到一个字符串表示形式,无法选择该子对象的属性: projectTeam ----------- @{projectNumber=930617506804; team=ow

我有一个C Cmdlet,它与REST服务交互,将JSON反序列化为动态对象ExpandoObject。当expando传递给WriteObject时,它会作为字典写入管道,因此我将其转换为类似于这样的PSObject,以使其属性可供类似Select Object的人访问:

当我尝试从管道中选择projectTeam属性时,我得到一个字符串表示形式,无法选择该子对象的属性:

projectTeam
-----------
@{projectNumber=930617506804; team=owners}
@{projectNumber=930617506804; team=editors}
@{projectNumber=930617506804; team=viewers}

我想我希望能够选择或以其他方式导航对象层次结构。PSObject本质上是一组简单的名称-值对,还是可以表示对象层次结构?如果是这样,如何表示嵌套对象,使其属性可选择,还是有必要展平对象层次结构?

projectTeam的值真的是字符串吗?它看起来像一个哈希表。您是否仔细阅读了代码以查看projectTeam键的值是否实际被解释为ExpandooObject?可能内部属性是普通的哈希表,因此kvp.Value is ExpandoObject将计算为false,然后递归将永远不会发生。@briantist我已经介绍过了,projectTeam确实正在转换为PSObject。对象转储中的语法是PSObject的ToString。当您说您试图从管道中选择属性时,您的意思是在Powershell中?你能发那个密码吗?
{
   "kind": "storage#bucketAccessControl",
   "role": "OWNER",
   "projectTeam": {
    "projectNumber": "930617506804",
    "team": "owners"
   },
   "etag": "CAE="
  }
projectTeam
-----------
@{projectNumber=930617506804; team=owners}
@{projectNumber=930617506804; team=editors}
@{projectNumber=930617506804; team=viewers}