2

このコードを実行すると、名前として「MyObj」を渡したにもかかわらず、値のない Name プロパティを持つ $o が発生します。私は何を間違っていますか?

助けてくれてありがとう。

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

注: 上記のステートメントで を使用しているため、関数の最後の行で-passThrulone を省略できます。$o

于 2012-07-23T16:44:20.763 に答える