2017-02-09 20 views
2

関連するプロパティのチェーンを使用して2つのリンクされたオブジェクトのデータにアクセスしようとしています。しかし、一連のプロパティは1つの変数でしか利用できず、Powershellを悩ませるようです。1つの変数のプロパティチェーンによるリンクオブジェクトのデータへのアクセス

$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

参照が(// stackoverflow.com/a/41878478) – wOxxOm

答えて

0

面白いヒントありがとうございます。ハッシュテーブルの情報に基づいて、私は次のコードで、私の問題を解決しました:[PowerShellの変数を経由して、ネストされたJSON/Hashtableのデータへのアクセス/問題の解析]

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

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

    $QualifiedObjectProperty 
} 

... 

Get-DeepObjectProperty $ObjManualSet $PropertyChain = $DataContent 
関連する問題