背景
它以一个cmdlet作为
Save hash table in PowerShell object notation (PSON)
ConvertTo-Expression
. 将PowerShell对象序列化为PowerShell表达式的cmdlet。
有点参与
-Depth
类似本机cmdlet的问题(
ConvertTo-Xml
和
ConvertTo-Json
)由于重复的属性引用,我想知道这个问题是否可以在PowerShell表达式中得到很好的解决。
例子
$Object = @{
Name = "Parent"
Child = @{
Name = "Child"
}
}
$Object.Child.Parent = $Object
在本例中
.Child.Parent
属性引用回
$Object
,意思是
$Object.Child.Parent.Child.Parent.Name
Parent
.
目前
$Object | ConvertTo-Expression
返回
ScriptBlock
比如:
@{
'Child' = @{
'Parent' = $_
'Name' = 'Parent'
}
'Name' = 'Parent'
}
[ScriptBlock]::Create(
@'
$_ = @{
'Child' = @{
'Parent' = $_
'Name' = 'Parent'
}
'Name' = 'Parent'
}
$_.Child.Parent = $_
$_
'@
)
(类似于示例中对象的初始构造方式。)
恢复(调用、反序列化)此表达式需要以下内容:
$Expression = [ScriptBlock]::Create(... # The above result
$Object = &$Expression
$Object.Child.Parent.Name
问题
是否有其他方法(例如使用
$This
,一个
ScriptProperty
或…)来还原
PowerShell
是否可以在施工时参考其他物业?
lazy initialization
.)