1

我正在尝试使用父属性在自定义对象中设置子属性。

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

第 1 节和第 2 节是我尝试过的语法示例。这可能吗?我究竟做错了什么?

4

1 回答 1

1

问题是嵌套。必须先创建父对象属性的哈希表,然后才能将其传递到创建父对象的 cmdlet,因此您不能引用尚不存在的东西。

将其作为一个 2 步过程进行。创建父级,然后在事后添加一个成员:

$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; 
    }
)
于 2015-09-16T04:09:20.790 回答