簡體   English   中英

訪問嵌套屬性

[英]Accessing nested properties

是否可以通過使用變量名來訪問嵌套屬性?

一些代碼來闡明:

$MyObject = [PSCustomObject]@{
    Name = 'Object name'
    Input = @{
        Error = @{
            Terminating = @(
                [PSCustomObject]@{
                    Type = 'Error.Terminating'
                    Name = 'MissingParameter'
                    Description = $null
                    Value = @($null)
                }
            )
            NonTerminating = @(
                [PSCustomObject]@{
                    Type = 'Error.NonTerminating'
                    Name = 'FileNotMoved'
                    Description = $null
                    Value = @($null)
                }
            )
        }
        Warning = @(
            [PSCustomObject]@{
                Type = 'Warning'
                Name = 'ADObjectConflict'
                Description = $null
                Value = @($null)
            }
        )
    }
}
# Correct result    
$MyObject.Input.Error.Terminating

# Incorrect result    
$string = 'Error.Terminating'
$MyObject.Input.$string

# Incorrect result        
$MyObject.Input.($MyObject.Input.Error.Terminating[0].Type)

最后兩個語句不返回有問題的對象。 如果可以使用變量來解決它們,那就太好了。

就像@TheIncorregible指出的那樣, Error and Terminating are two different objects 您可以執行類似的解決方法,以獲得所需的結果:

# Correct result    
$property1 = 'Error'
$property2 = 'Terminating'

$MyObject.Input.($property1).($property2)

這樣,我們得到以下輸出:

Type              Name             Description Value  
----              ----             ----------- -----  
Error.Terminating MissingParameter             {$null}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM