Нужна помощь в назначении встроенного объекта родительскому объекту в скрипте PowerShell - PullRequest
0 голосов
/ 08 ноября 2018

Я довольно новичок в 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                         : 

Цель - присвоить значения встроенным объектам и передать их родительскому объекту. Я могу использовать массив или хэш-таблицу, но при назначении этих объектов родительскому объекту я терплю неудачу.

Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Поскольку оба типа имеют конструкторы без параметров, их инициализация с помощью хеш-таблиц должна работать; аналогично, пользовательский объект $MGSet может быть создан встроенный, приведя хеш-таблицу к [pscustomobject]:

$MgmtSet = [Cmdlet.WebService.MgInfo] @{
   Param1 = $true
   Param2 = $false
   oParam = [Cmdlet.WebService.ParamBase] @{
     differentParam = "Testname"
     DiffParam2 = $false
     oDifParamOb = [pscustomobject] @{ oDifParamOb = "sys1", "Sys2", "Sys3" }
   }
 }
0 голосов
/ 08 ноября 2018

Это то, что вы хотите?

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...