2015-09-16 6 views
1

J'essaie de définir une propriété enfant dans un objet personnalisé à l'aide d'une propriété parent.Référence de la propriété enfant Powershell Propriété parent

$objServer = New-Object PSObject -Property @{ 
    Name = "Some Name"; 
    BaseFilePath = "c:\somepath" 
    Section1 = New-Object PSObject -Property @{ 
     FilePath=$objServer.BaseFilePath + '\' + $objServer.Name + '\section1'; 
     AncestorId="557309"; 
     Title="Section 1"; 
     Enabled=$processFlag1; 
    } 
    Section2 = New-Object PSObject -Property @{ 
     FilePath={$_.Parent.BaseFilePath} + '\' + {$_.Parent.Name} + '\' + '\section2'; 
     AncestorId="557319"; 
     Title="Tables"; 
     Enabled=$processFlag2; 
    } 
} 

La section 1 et la section 2 sont des exemples de syntaxe que j'ai essayés. Est-ce possible? Qu'est-ce que je fais mal?

Répondre

0

Le problème est l'imbrication. La table de hachage des propriétés de l'objet parent doit être créée avant de pouvoir être transmise à l'applet de commande qui a créé le parent. Vous ne pouvez donc pas faire référence à quelque chose qui n'existe pas encore.

Faites-le comme un processus en deux étapes. Créez le parent, puis ajoutez un membre après le fait:

$objServer = New-Object PSObject -Property @{ 
    Name = "Some Name" 
    BaseFilePath = "c:\somepath" 
} 
$objServer | Add-Member -NotePropertyName Section1 -NotePropertyValue (
    New-Object PSObject -Property @{ 
     FilePath=$objServer.BaseFilePath + '\' + $objServer.Name + '\section1'; 
     AncestorId="557309"; 
     Title="Section 1"; 
     Enabled=$processFlag1; 
    } 
) 
+0

Je me suis dit que c'était le cas. J'ai passé un peu de temps à essayer le $ mot-clé, mais cela n'a pas fonctionné :( – Hecatonchires