当我运行此代码时,它导致$ o具有没有值的Name属性,即使我传递了'MyObj'作为名称。我做错了什么?
感谢您的帮助。
function CreateSomething {
param( [string] $name )
$o = new-object PSObject
write-host '$name:' $name
$o | add-member -name Name -passThru -force -memberType ScriptProperty -value { $name }
$o
}
$o = CreateSomething -name MyObj
$o
答案 0 :(得分:5)
你想在这里实现什么?
-value { $name }
将是用于ScriptProperty的脚本块,它不知道$name
(它不在范围内)
你可以这样做:
$o | add-member -name Name -passThru -force -memberType ScriptProperty -value { $name }.GetNewClosure()
我不明白为什么你不能这样做:
$o | add-member -name Name -passThru -force -memberType NoteProperty -value $name
注意:由于您在上述语句中使用-passThru
,因此可以在函数的最后一行省略单独的$o
。