2017-02-09 133 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