Χρειάζεστε βοήθεια ανάθεση ενός ενσωματωμένου αντικειμένου σε έναν γονέα αντικειμένου σε ένα σενάριο PowerShell

ψήφοι
2

Είμαι αρκετά νέος για να PowerShell και είμαι βέβαιος ότι οι θεοί script θα έχουν μια μέρα σανό πάρει αυτό εκτός, ή να την απορρίψει από το χέρι. Έχω διαβάσει πολλά έγγραφα σχετικά με τη δημιουργία αντικειμένων, και την ανάθεση των μελών των αντικειμένων. Πολλές θέσεις είναι πολύ παρόμοια, αλλά έχω ακόμα να βρείτε αυτό που απαντά άμεσα στην ερώτησή μου.

Το παρακάτω είναι ένα παράδειγμα του τι είμαι προσπαθούμε να επιτύχουμε.

$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                         : 

Ο στόχος είναι να εκχωρήσετε τιμές στα ενσωματωμένα αντικείμενα και να περάσει στο μητρικό αντικείμενο. Μπορώ να χρησιμοποιήσω ένα Array, ή έναν πίνακα κατακερματισμού, αλλά ανάθεση των αντικειμένων στη μητρική είναι που υπολείπονται.

Σας ευχαριστούμε εκ των προτέρων.

Δημοσιεύθηκε 07/11/2018 στις 23:56
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
1

Είναι αυτό που θέλετε;

$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
Απαντήθηκε 08/11/2018 στις 00:40
πηγή χρήστη

ψήφοι
0

Δεδομένου ότι και οι δύο τύποι που εμπλέκονται φαίνεται να έχουν παράμετρος-κάτω κατασκευαστές, την προετοιμασία τους μέσω hashtables θα πρέπει να εργαστεί? Ομοίως, προσαρμοσμένο αντικείμενο $MGSetμπορούν να δημιουργηθούν ενσωματωμένα με χύτευση ενός hashtable να [pscustomobject]:

$MgmtSet = [Cmdlet.WebService.MgInfo] @{
   Param1 = $true
   Param2 = $false
   oParam = [Cmdlet.WebService.ParamBase] @{
     differentParam = "Testname"
     DiffParam2 = $false
     oDifParamOb = [pscustomobject] @{ oDifParamOb = "sys1", "Sys2", "Sys3" }
   }
 }
Απαντήθηκε 08/11/2018 στις 04:01
πηγή χρήστη

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