2

当我运行此代码时,它会导致 $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
4

1 回答 1

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函数最后一行中的 lone。

于 2012-07-23T16:44:20.763 回答