[英]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.