2017-02-09 139 views
2

我试图通过使用相关属性链来访问两个链接对象的数据。但是,属性链只能在单个变量中使用,并且似乎会影响Powershell。通过单个变量中的属性链访问链接对象的数据

下面是一个例子:

$DeliveryNote = New-Object System.Object 
$DeliveryNote | Add-Member -type NoteProperty -name ID -Value "DN-2017-005" 

$ObjLetters = New-Object System.Object 
$ObjLetters | Add-Member -type NoteProperty -name DeliveryNote -Value $DeliveryNote 

$DeliveryNote = "DeliveryNote" 
$ID = "ID" 
$PropChain ="DeliveryNote.ID" 

$ObjLetters.$DeliveryNote.$ID   # works fine 
$ObjLetters."$($DeliveryNote)"."$($ID)" # works fine 

$ObjLetters.$PropChain     # does not work 
$ObjLetters."$($PropChain)"    # does not work 

访问最终数据“DN-2017-005”只要性能可作为单一变量工作正常。但只要两个属性都在一个变量中,我就不会得到结果作为输出。 有没有人有一个想法如何处理单个变量的属性?

+0

参见[解析问题/通过在PowerShell中的变量访问嵌套的JSON/Hashtable的数据(// stackoverflow.com/a/41878478) – wOxxOm

回答

0

感谢您的有趣提示。基于哈希表的信息我解决我的问题,用下面的代码:

Function Get-DeepObjectProperty { 
    Param(
    [object] $QualifiedObjectProperty, 
    [string] $PropertyChain) 

    $PropertyArray = $PropertyChain.split("\.") 
    $PropertyArray | ForEach-Object {$QualifiedObjectProperty = $QualifiedObjectProperty.$_} 

    $QualifiedObjectProperty 
} 

... 

Get-DeepObjectProperty $ObjManualSet $PropertyChain = $DataContent