需要帮助将嵌入式对象分配给PowerShell脚本中的父对象吗

需要帮助将嵌入式对象分配给PowerShell脚本中的父对象吗,powershell,Powershell,我对PowerShell相当陌生,我相信脚本神会有一天把它拆开,或者马上拒绝它。我已经阅读了很多关于创建对象和为对象分配成员的文档。很多帖子都非常相似,但我还没有找到一个能直接回答我问题的帖子 下面是我试图实现的一个例子 $MGSet = New-Object -TypeName PSObject $MgmtSet = New-Object -TypeName Cmdlet.WebService.MgInfo $MgmtSet.Param1 = $true $MgmtSe

我对PowerShell相当陌生,我相信脚本神会有一天把它拆开,或者马上拒绝它。我已经阅读了很多关于创建对象和为对象分配成员的文档。很多帖子都非常相似,但我还没有找到一个能直接回答我问题的帖子

下面是我试图实现的一个例子

$MGSet = New-Object -TypeName PSObject
$MgmtSet = New-Object -TypeName Cmdlet.WebService.MgInfo
      $MgmtSet.Param1 = $true
      $MgmtSet.Param2 = $false
      $MgmtSet.oParam = [Cmdlet.WebService.ParamBase] @{
            $PB.differentParam = "Testname"
            $PB.DiffParam2 = $false
            $PB.oDifParamOb = Add-Member -InputObject $MGset - MemberType NoteProperty -Name oDifParamOb -Value ("sys1", "Sys2", "Sys3")
       }
首先,我知道这是错误的,但想法是父对象有一个对象作为参数之一。此外,新对象还有一个嵌入对象:Parentobject>childobject>baseobject

如果我要执行

$MgmtSet = New-Object -TypeName Cmdlet.WebService.MgInfo
$MgmtSet
我会得到

ExtensionData                       :
Param1                              : True
Param2                              : False
oParam                              : {Cmdlet.WebService.ParamBase}
如果我执行

$MgmtSet = New-Object -TypeName Cmdlet.WebService.ParamBase
$MgmtSet
我会得到

ExtensionData                       :
differentParam                      : Testname
DiffParam2                          : False
oDifParamOb                         : 
目标是为嵌入对象指定值并将其传递给父对象。我可以使用数组或哈希表,但将这些对象分配给父对象是我的不足之处

提前谢谢你。

这是你想要的吗

$ParentObject = New-Object -TypeName psobject
$ChildObject = New-Object -TypeName psobject
$ChildObject | Add-Member -MemberType NoteProperty -Name "HI" -Value "Spoons are fun"
$ParentObject | Add-Member -MemberType NoteProperty -Name "Sub" -Value $ChildObject

$ParentObject.Sub.HI

由于所涉及的两种类型似乎都具有无参数构造函数,因此通过哈希表初始化它们应该是可行的;类似地,可以创建自定义对象
$MGSet
通过将哈希表强制转换为
[pscustomobject]
进行内联:

$MgmtSet = [Cmdlet.WebService.MgInfo] @{
   Param1 = $true
   Param2 = $false
   oParam = [Cmdlet.WebService.ParamBase] @{
     differentParam = "Testname"
     DiffParam2 = $false
     oDifParamOb = [pscustomobject] @{ oDifParamOb = "sys1", "Sys2", "Sys3" }
   }
 }

这就是我所寻找的,让我更接近我的目标。非常感谢。