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

См [Проблем синтаксического анализа/доступа к вложенным JSON/Hashtable данных с помощью переменных в Powershell] (// 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