Benötigen Sie Hilfe ein eingebettetes Objekt zu einem übergeordneten Objekt in einem Powershell-Skript zuweisen

stimmen
2

Ich bin ziemlich neu in Powershell, und ich bin sicher, dass die Skript Götter einen Heutag dieser zerpflücken haben werden, oder es ablehnen aus der Hand. Ich habe eine Menge von Dokumentation in Bezug auf das Erzeugen von Objekten zu lesen, und die Mitglieder zu den Objekten zuweisen. Viele Beiträge sind sehr ähnlich, aber ich habe noch zu finden, die meine Frage direkt beantwortet.

Das Folgende ist ein Beispiel dafür, was ich zu erreichen bin versucht.

$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)
       }

Erstens weiß ich, das ist falsch, aber die Idee ist das übergeordnete Objekt ein Objekt als einer der Parameter hat. Darüber hinaus auch das neue Objekt hat ein eingebettetes Objekt: Parent> Childobject> baseobject

Wenn ich ausführen ...

$MgmtSet = New-Object -TypeName Cmdlet.WebService.MgInfo
$MgmtSet

ich würde bekommen

ExtensionData                       :
Param1                              : True
Param2                              : False
oParam                              : {Cmdlet.WebService.ParamBase}

Auf dem gleichen Grund, wenn ich ausführen

$MgmtSet = New-Object -TypeName Cmdlet.WebService.ParamBase
$MgmtSet

ich würde bekommen

ExtensionData                       :
differentParam                      : Testname
DiffParam2                          : False
oDifParamOb                         : 

Das Ziel ist es, Werte zu den eingebetteten Objekten zuweisen und an das übergeordnete Objekt übergeben. Ich kann ein Array oder eine Hash-Tabelle verwenden, aber diese Objekte auf den übergeordneten Zuordnung ist, wo ich kurz.

Vielen Dank im Voraus.

Veröffentlicht am 07/11/2018 um 23:56
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Ist das was du willst?

$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
Beantwortet am 08/11/2018 um 00:40
quelle vom benutzer

stimmen
0

Da beide beteiligten Arten scheinen parameterlose Konstruktoren haben, sollten sie über Hash - Tabellen initialisieren arbeiten; in ähnlicher Weise, benutzerdefiniertes Objekt $MGSetkann inline eine Hash - Tabelle zu durch Gießen erstellt werden [pscustomobject]:

$MgmtSet = [Cmdlet.WebService.MgInfo] @{
   Param1 = $true
   Param2 = $false
   oParam = [Cmdlet.WebService.ParamBase] @{
     differentParam = "Testname"
     DiffParam2 = $false
     oDifParamOb = [pscustomobject] @{ oDifParamOb = "sys1", "Sys2", "Sys3" }
   }
 }
Beantwortet am 08/11/2018 um 04:01
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more